You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jenkins流水线中使用Cosign签名Docker镜像时遇命令未找到错误

解决Jenkins流水线中Cosign命令未找到的问题

问题原因

Jenkins执行流水线的Agent(主节点或从节点)中未安装Cosign工具,导致系统无法定位cosign命令。

解决方案

1. 在Jenkins Agent上手动安装Cosign

根据Agent的操作系统选择对应安装命令:

  • Debian/Ubuntu:
    sudo apt update && sudo apt install -y cosign
    
  • RHEL/CentOS/Rocky Linux:
    sudo dnf install -y cosign
    
  • 通过Go安装(需已配置Go环境):
    go install github.com/sigstore/cosign/cmd/cosign@latest
    
  • 直接下载二进制文件(通用Linux x86_64架构):
    wget https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64
    chmod +x cosign-linux-amd64
    sudo mv cosign-linux-amd64 /usr/local/bin/cosign
    
    若为ARM64架构,替换下载链接为cosign-linux-arm64。

2. 在流水线中动态安装Cosign

如果无法手动操作Agent,可在流水线阶段先完成安装再执行签名:

stage('sign the container image') {
    steps {
        sh '''
            # 下载并安装Cosign
            wget https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64
            chmod +x cosign-linux-amd64
            sudo mv cosign-linux-amd64 /usr/local/bin/cosign
            # 验证安装
            cosign version
            # 执行镜像签名
            cosign sign --key $COSIGN_PRIVATE_KEY hub.docker.com/hamzanasir6886/evsil-dev:latest-3
        '''
    }
}

3. 使用预装Cosign的Docker Agent

若采用Docker作为Jenkins Agent,可直接使用官方预装Cosign的镜像:

pipeline {
    agent {
        docker { image 'sigstore/cosign:latest' }
    }
    stages {
        stage('sign the container image') {
            steps {
                sh 'cosign version'
                sh 'cosign sign --key $COSIGN_PRIVATE_KEY hub.docker.com/hamzanasir6886/evsil-dev:latest-3'
            }
        }
    }
}

4. 检查环境变量PATH

若已安装Cosign但仍报错,需确认安装目录已加入系统PATH:

  • 例如通过Go安装的Cosign默认在$HOME/go/bin,可在流水线中临时添加:
    stage('sign the container image') {
        steps {
            sh 'export PATH=$PATH:$HOME/go/bin && cosign version'
            sh 'export PATH=$PATH:$HOME/go/bin && cosign sign --key $COSIGN_PRIVATE_KEY hub.docker.com/hamzanasir6886/evsil-dev:latest-3'
        }
    }
    
  • 也可在Jenkins全局配置中永久添加该路径到环境变量。

额外提示

确保$COSIGN_PRIVATE_KEY已正确配置为Jenkins的全局环境变量或凭据,避免签名阶段出现密钥无法读取的问题。

内容的提问来源于stack exchange,提问作者Hamza Nasir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:05:17