Jenkins 声明式管道:使用条件步骤输入而不阻止执行器



我正在尝试让以下功能在 Jenkins 的声明式管道语法中工作:

  • 仅在master分支上有条件地执行某些阶段
  • input要求用户确认以部署到过渡环境
  • 在等待确认时,它不会阻止执行者

这是我最终得到的:

pipeline {
agent none
stages {
stage('1. Compile') {
agent any
steps {
echo 'compile'
}
}
stage('2. Build & push Docker image') {
agent any
when {
branch 'master'
}
steps {
echo "build & push docker image"
}
}
stage('3. Deploy to stage') {
when {
branch 'master'
}
input {
message "Deploy to stage?"
ok "Deploy"
}
agent any
steps {
echo 'Deploy to stage'
}
}
}
}

问题是阶段 2 需要 1 的输出,但这在运行时不可用。如果我用全局agent any替换各种agent指令,则输出可用,但执行器在第 3 阶段等待用户输入时被阻止。如果我尝试将 1 和 2 合并为一个阶段,那么我就失去了仅在master上有条件地运行某些步骤的能力。

有没有办法实现我正在寻找的所有行为?

您需要在第一步结束时使用stash命令,然后在需要文件时unstash

我认为这些在代码片段生成器中可用

根据文档

保存一组文件以供以后在同一版本中使用,通常为 另一个节点/工作区。隐藏的文件在其他情况下不可用,并且 通常在构建结束时丢弃。请注意,藏匿处 取消存储步骤设计用于小文件。对于大型 数据传输,使用外部工作区管理器插件,或使用 外部存储库管理器,如 Nexus 或 Artifactory

相关内容

  • 没有找到相关文章

最新更新