我想要求输入,但前提是我们在某个分支上。但是输入在when之前运行。可以使用声明性语法来完成吗?

例如,即使分支不是主节点,这也总是提示

stage('only on master') {
   when {
      branch 'master'
   }
   input { ... }
}


评论

使用docs jenkins.io/doc/book/pipeline/syntax中指定的beforeInput

#1 楼

我看到两种方法:

将当前分支名称保存在变量中,并在if语句中进行检查

CURRENT_BRANCH = '...' // some value or parameter

stage('only on master') {
  if (CURRENT_BRANCH == 'master') {
  input {
    ...
  }
}

// be sure to check if input was set or define a default value




运行一个shell脚本来知道当前文件夹是否是master上的git repo

以下命令检查当前文件夹是否是一个显示“ true”的git仓库(如果没有则返回错误repo)

git rev-parse --is-inside-work-tree


接下来,打印当前的分支名称

git branch | grep \* | cut -d ' ' -f2


两者均用于创建脚本设置环境变量。
检查管道上的值,以显示输入

stage('only on master') {

  // Set true on IS_ON_MASTER if current branch is master, 
  // otherwise set false

  sh ./check-branch-master.sh 

  if (env.IS_ON_MASTER) {
  input {
    ...
  }
}


评论


不要忘记添加右括号“}”,这在第一个和最后一个代码片段中都没有。

–克里斯
19-4-10在14:05