从Jenkinsfile调用gradlew

Lia*_*m M 3 continuous-integration gradle jenkins gradlew

我的项目在根目录中包含一个gradlew shell脚本和一个Jenkins文件.Jenkins文件包含:

import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
    sh 'gradlew build -x check'
}
Run Code Online (Sandbox Code Playgroud)

当我将其推送到我的存储库时,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
Run Code Online (Sandbox Code Playgroud)

如何修改我的Jenkins文件以便gradlew脚本找到并正确运行?

跟进#1

下列:

import jenkins.model.Jenkins
node('jnlp-slave-with-java-build-tools') {
    sh './gradlew build -x check'
}
Run Code Online (Sandbox Code Playgroud)

结果是:

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
Run Code Online (Sandbox Code Playgroud)

所以仍然得到一个'未找到'的错误.

后续#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'
}
Run Code Online (Sandbox Code Playgroud)

输出total 0,表明我可能在错误的目录或有权限问题?欢迎提出建议!

Lia*_*m M 5

事实证明这是我的一个误解:我认为Jenkins会它运行我的Jenkins文件之前撤下repo,但事实并非如此,我需要自己添加:

checkout scm
Run Code Online (Sandbox Code Playgroud)

我现在收到一个无关的错误.

文档中对此进行了介绍,但我的错误印象是在我的设置中没有必要.