jenkinsfiledocker代理访问私人存储库和composer php

我试图在Jenkinsfile中使用声明性的pipe道来build立我的PHP应用程序。 我的jenkins运行在docker集装箱,因为我也想用这个服务器的其他服务。

现在我的问题是,我必须安装私人包从bitbucket通过与composer php的公钥authentication。 对于composer php,我使用docker集线器上官方composer php的docker集装箱。

这是我的Jenkinsfile:

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 :(' } } } 

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

如果我在没有sshagent sh 'composer install'情况下使用sh'composer sh 'composer install' ,composer就像期望的那样运行,但是对于私有存储库却失败了。

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

谢谢