【发布时间】:2022-01-08 02:33:23
【问题描述】:
对于我的 ETL 脚本,我使用的是持续开发基础架构:如果测试工作流成功,则意味着可以将其推送到生产环境中,然后在夜间运行,如果测试不成功,则更改不会已推送,但生产脚本仍在运行。
到目前为止,每次成功更改时,我都会手动将我的测试分支重新定位到我的主分支。我想自动执行此操作,以便在测试管道作业完成并成功后,Jenkins 会自动在测试分支上重新设置主分支并将其推送到远程存储库。
这是我当前的 jenkins 管道代码模型 (Jenkinsfile_test):
def gv
pipeline {
agent any
stages{
stage("init") {
steps {
script {
gv = load "script.groovy"
}
}
}
stage("01_test1") {
when {
changeset "**/01_test1/**"
}
steps {
script {
gv.test1()
}
}
}
stage("02_test2") {
when {
changeset "**/02_test2/**"
}
steps {
script {
gv.test2()
}
}
}
}
post {
success {
echo "success"
withCredentials([usernamePassword(credentialsId: 'xxx',
usernameVariable: 'xxx',
passwordVariable: 'xxx')]){
sh "git checkout master"
sh "git rebase test"
sh("git push http://$username:$password@http://git-server/test.git test")
}
}
}
}
我尝试了在这里找到的解决方案:Is it possible to Git merge / push using Jenkins pipeline
但它不起作用。我实际上不知道如何设置我的成功步骤。
以下是我在运行 jenkins 管道作业时遇到的错误:
Error when executing success post condition:
java.io.IOException: CreateProcess error=2, The system cannot find the file specified
Caused: java.io.IOException: Cannot run program "nohup" (in directory "C:\Program Files
(x86)\Jenkins\workspace\test_pipeline")
任何帮助将不胜感激。
【问题讨论】: