我编写了一个Jenkins管道,相关部分如下所示:
pipeline {
agent {
dockerfile true
}
triggers {
pollSCM('H 1 * * 1-5')
}
options {
buildDiscarder(logRotator(artifactNumToKeepStr: "${NUMBER_OF_ARTIFACTS_TO_KEEP}"))
disableConcurrentBuilds()
timeout(time: 60, unit: 'MINUTES')
timestamps()
}
stages {
stage('Metadata') {
steps {
script {
sh 'java -version'
}
script {
sh './mvnw -v'
}
}
}
stage('Build') {
steps {
script {
sh './mvnw --batch-mode clean install'
}
}
}
stage('Archive artifacts (develop/master)') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
sh './package.sh'
}
archive '**/target/*.jar'
archiveArtifacts artifacts: '*.deb'
}
}
}
post {
always {
deleteDir()
}
failure {
sendNotifications currentBuild.result
}
unstable {
sendNotifications currentBuild.result
}
}
}
和我的Dockerfile:
FROM alpine
RUN apk add --no-cache dpkg openjdk8
所有脚本运行正常,但package.sh除外,我在输出中得到以下日志:
07:47:25 [chx-sync_-sync_master-A2F53LY4I2X54TLDEU2Z2PXI423NI6FODHQDS7CRIKCCNDF5UGOA]运行shell脚本07:47:25 ./package.sh 07:47:25 / home / jenkins / jenkins / workspace / chx-sync_-sync_master-A2F53LY4I2X54TLDEU2Z2PXI423NI6FODHQDS7CRIKCCNDF5UGOA @ tmp / durable-dbcb4143 / script.sh:第1行:./ package.sh:未找到
我无法弄清楚为什么除了这个脚本之外的所有脚本都可以工作 . 它们都位于Git项目的根目录中 . 我的管道中是否有一些命令会改变工作目录,或者这里发生了什么?
EDIT:
我猜猜package.sh中的shebang可能有用吗?这是 #!/bin/bash
.
1 回答
我在SO得到了这个答案的答案 . 我只是改变了使用
#!/bin/sh
并且它正在工作 .