1

我正在尝试在 Jenkinsfile 中使用声明性管道来构建我的 php 应用程序。我的 jenkins 在 docker 容器中运行,因为我也想将此服务器用于其他服务。

我现在的问题是,我还必须通过作曲家的公钥身份验证从 bitbucket 安装私有包。对于作曲家,我正在使用来自 docker hub 上的官方作曲家的 docker 容器。

这是我的詹金斯文件:

pipeline {
    environment {
        BUILD_VERSION = new java.text.SimpleDateFormat('yyyyMMddHHmmss').format(new Date())
    }

    options {
        buildDiscarder(logRotator(numToKeepStr: '3'))
    }

    agent any

    stages {

        stage('composer install') {
            agent {
                docker {
                    image 'composer:latest'
                    args "--volume /tmp:/app --volume /etc/passwd:/etc/passwd:ro --volume /etc/group:/etc/group:ro -u 1000"
                }
            }

            steps {
                sshagent(credentials: ['jenkins_ssh_key']){
                    sh 'composer install -d /app'
                }
            }

            post {
                success {
                    echo 'Composer compiled successfully :)'
                }

                failure {
                    echo 'Composer throw an error :('
                }
            }
        }
    }

    post {
        always {
            echo 'Cleaning up'
            deleteDir() /* clean up our workspace */
        }
        success {
            echo 'Build successful finished :)'
        }
        failure {
            echo '[FAILURE] Build was not successful :('
        }
    }
}

如果我使用sh 'composer install'within sshagent(...){...},就像在我上面的文件中一样,它会失败并显示没有找到 composer.json 的信息。

如果我在sh 'composer install'没有 sshagent 的情况下使用,composer 会按预期运行,但对于私有存储库会失败。

希望任何人都可以帮助我解决这个问题。

谢谢

4

0 回答 0