我正在尝试在 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 会按预期运行,但对于私有存储库会失败。
希望任何人都可以帮助我解决这个问题。
谢谢