.yaml我正在尝试向 Jenkins 阶段添加条件,以便仅当变更集中的文件发生更改时才会触发
我最终尝试的代码是:
when {
changeset '*.yaml'
}
Run Code Online (Sandbox Code Playgroud)
根据以下站点,这应该会导致当更改集中的文件发生更改时运行该阶段*.yaml,但是始终会跳过该阶段
有谁知道我哪里出错了,或者我还可以尝试什么?
谢谢!
Jenkins 必须首先收集变更日志,例如 checkout scm。\n当您刚刚checkout scm在 jenkins 管道中运行时,它会告诉您:\n错误:\xe2\x80\x98checkout scm\xe2\x80\x99 仅在使用 \xe2\x80 时可用来自 SCM\xe2\x80\x9d 的 \x9cMultibranch Pipeline\xe2\x80\x9d 或 \xe2\x80\x9cPipeline 脚本。
因此,将 Jenkinsfile 中的管道添加到存储库中。\n我的存储库包含一个文件test.yaml和一个Jenkinsfile具有此管道的文件:
pipeline{\n agent any\n\n stages{\n stage(\'checkout\'){\n steps{\n git branch: \'master\', url: \'https://github.com/xxx/xxx.git\'\n }\n }\n\n stage(\'test\'){\n when {\n changeset "*.yaml"\n }\n steps{\n echo "The file did change in the last commit (SCM checking)"\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n现在它会起作用了。当您的文件中的 Git 发生更改时,您将看到:
\n\n[Pipeline] { (test)\n[Pipeline] echo\nThe file did change in the last commit (SCM checking)\n[Pipeline] }\n[Pipeline] // stage\nRun Code Online (Sandbox Code Playgroud)\n\n如果没有变化的话:
\n\n[Pipeline] { (test)\nStage "test" skipped due to when conditional\n[Pipeline] }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
13348 次 |
| 最近记录: |