带有 Gradle 发布插件的 Jenkins 管道

Jenkins Pipelines with Gradle release plugin

我正在使用 Jenkins Pipelines 来构建我的包并将它们传送到 Artifactory。我试图通过 Gradle Release Plugin 将它与 Gradle 一起使用,但它有问题。

我正在启动一个 ssh-agent,以便 Gradle 有权推送 Git 存储库:

sshagent([git_credential]) {
    sh "./gradlew clean release unSnapshotVersion -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=${release_version} -Prelease.newVersion=${development_version}"
}

问题是 Gradle 似乎 运行 异步,ssh-agent 在 Gradle 执行结束前停止。请参阅上面的 Jenkins 日志:

[Pipeline] sshagent
[ssh-agent] Using credentials git
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Java/JNR ssh-agent
[ssh-agent] Registered BouncyCastle on the remote agent
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
[Release - MyModule] Running shell script
+ ./gradlew clean release unSnapshotVersion -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=1.1.0 -Prelease.newVersion=1.2.0-SNAPSHOT
:clean
:release
:Release - MyModule:createScmAdapter
:Release - MyModule:initScmAdapter
:Release - MyModule:checkCommitNeeded
[ssh-agent] Stopped.
:Release - MyModule:checkUpdateNeeded
Running [git, remote, update] produced an error: [fatal: could not read Username for 'https://bitbucket.org': No such device or address
error: Impossible de récupérer origin]
:Release - MyModule:checkUpdateNeeded FAILED
:release FAILED
Release process failed, reverting back any changes made by Release Plugin.

是否可以同步强制Gradle到运行?

谢谢

日志误导了我,ssh-agent 正在退出,因为 Gradle 无法访问 GIT 存储库。事实上,在使用 https 克隆一个 Bitbucket 存储库时,需要 user+pwd。 使用 SSH 克隆相同的 repo 时,ssh-agent 提供证书并且 Gradle 能够与 Bitbucket 通信。