Jenkins自动化debreprepro存储库创建/签名

时间:2015-11-12 14:38:16

标签: jenkins debian gnupg sign deb

问题陈述:

  • 可以从普通终端内部(也在docker内)签署回购。从jenkins工作,回购创建/签署失败。工作挂起。

配置:

  • Jenkins生成docker容器来创建/签署deb存储库。
  • 私钥和公钥都在场。
  • gpg-agent安装在docker容器上以对包进行签名。
  • 〜/ .gnupg / gpg.conf文件有" use-agent"启用

进度:

  • 可以在docker容器上使用jenkins启动gpg-agent。
  • 可以使用gpg-preset-passphrase缓存密码。
  • 可以使用[OUTSIDE JENKINS]

    reprepro --ask-passphrase -Vb .  includedeb ${_repo_name} ${_pkg_location}
    

    从gpg-agent获取密码并签署回购。

问题:

  • 来自jenkins工作,命令" reprepro --ask-passphrase -Vb ..."挂起。

代码:

  • 启动gpg-agent:

    GPGAGENT=/usr/bin/gpg-agent
    GNUPG_PID_FILE=${GNUPGHOME}/gpg-agent-info
    GNUPG_CFG=${GNUPGHOME}/gpg.conf
    GNUPG_CFG=${GNUPGHOME}/gpg-agent.conf
    
    function start_gpg_agent {
        GPG_TTY=$(tty) 
        export GPG_TTY 
        if [ -r "${GNUPG_PID_FILE}" ]
        then
            source "${GNUPG_PID_FILE}" count=$(ps lax | grep "${GPGAGENT}" | grep "$SSH_AGENT_PID" | wc -l)
            if [ $count -eq 0 ] 
            then 
                if ! ${GPGAGENT} 2>/dev/null then 
                    $GPGAGENT --debug-all --options ${BASE_PATH}/sign/gpg-agent.options \
                     --daemon  --enable-ssh-support \
                     --allow-preset-passphrase --write-env-file ${GNUPG_PID_FILE}
    
                if [[ $? -eq 0 ]] 
                then 
                    echo "INFO::agent started" 
                else 
                    echo "INFO::Agent could not be started. Exit." 
                    exit -101 
                fi 
            fi 
        fi 
        else
            $GPGAGENT --debug-all --options ${BASE_PATH}/sign/gpg-agent.options \
            --daemon --allow-preset-passphrase --write-env-file ${GNUPG_PID_FILE}
        fi 
    } 
    
  • 选项文件:

    default-cache-ttl 31536000
    default-cache-ttl-ssh 31536000
    max-cache-ttl 31536000
    max-cache-ttl-ssh 31536000
    enable-ssh-support 
    debug-all
    
  • 保存密码。

    /usr/lib/gnupg2/gpg-preset-passphrase -v --preset --passphrase ${_passphrase} ${_fp}
    
  • 最后(完成),签署回购:

    reprepro --ask-passphrase -Vb .  includedeb ${_repo_name} ${_pkg_location}
    

0 个答案:

没有答案