从 Jenkinsfile 调用 gradlew
Call gradlew from Jenkinsfile
我的项目在根目录中包含一个 gradlew shell 脚本和一个 Jenkinsfile。 Jenkins 文件包含:
import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
sh 'gradlew build -x check'
}
当我将它推送到我的存储库时,Jenkins 找到了 Jenkinsfile 并尝试 运行 gradlew。但是,它失败了,通知我:
Running on ECS-2d51eb80546b7 in /home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ
[Pipeline] {
[Pipeline] sh
[tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ] Running shell script
+ gradlew build -x check
/home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-838b5837/script.sh: 2: /home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-838b5837/script.sh: gradlew: not found
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
GitHub has been notified of this commit’s build result
ERROR: script returned exit code 127
Finished: FAILURE
如何修改我的 Jenkinsfile 以便找到 gradlew 脚本并且 运行 正确?
跟进 #1
以下:
import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
sh './gradlew build -x check'
}
结果:
tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ] Running shell script
+ ./gradlew build -x check
/home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-3c901cf0/script.sh: 2: /home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-3c901cf0/script.sh: ./gradlew: not found
所以仍然出现 'not found' 错误。
跟进#2
运行:
import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
files = sh (script: 'ls -l',
returnStdout: true).trim()
echo "${files}"
sh './gradlew build -x check'
}
输出total 0
,提示可能是我错了,目录或者有权限问题?欢迎提出建议!
结果证明这是我的误会:我以为 Jenkins 会在 之前 删除回购 运行 我的 Jenkinsfile,但这不是事实并非如此,我需要自己添加:
checkout scm
我现在收到一个不相关的错误。
documentation 中对此进行了介绍,但我误以为在我的设置中不需要它。
我的项目在根目录中包含一个 gradlew shell 脚本和一个 Jenkinsfile。 Jenkins 文件包含:
import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
sh 'gradlew build -x check'
}
当我将它推送到我的存储库时,Jenkins 找到了 Jenkinsfile 并尝试 运行 gradlew。但是,它失败了,通知我:
Running on ECS-2d51eb80546b7 in /home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ
[Pipeline] {
[Pipeline] sh
[tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ] Running shell script
+ gradlew build -x check
/home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-838b5837/script.sh: 2: /home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-838b5837/script.sh: gradlew: not found
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
GitHub has been notified of this commit’s build result
ERROR: script returned exit code 127
Finished: FAILURE
如何修改我的 Jenkinsfile 以便找到 gradlew 脚本并且 运行 正确?
跟进 #1
以下:
import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
sh './gradlew build -x check'
}
结果:
tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ] Running shell script
+ ./gradlew build -x check
/home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-3c901cf0/script.sh: 2: /home/jenkins/workspace/tems_chore_add-jenkins-file-7VBJJMGP4JS3QPUSNL2ROWDE3ECV5A4EJQJ6Z5VCSPDK7UABIPVQ@tmp/durable-3c901cf0/script.sh: ./gradlew: not found
所以仍然出现 'not found' 错误。
跟进#2
运行:
import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
files = sh (script: 'ls -l',
returnStdout: true).trim()
echo "${files}"
sh './gradlew build -x check'
}
输出total 0
,提示可能是我错了,目录或者有权限问题?欢迎提出建议!
结果证明这是我的误会:我以为 Jenkins 会在 之前 删除回购 运行 我的 Jenkinsfile,但这不是事实并非如此,我需要自己添加:
checkout scm
我现在收到一个不相关的错误。
documentation 中对此进行了介绍,但我误以为在我的设置中不需要它。