Jenkins 声明式管道:后脚本条件

gra*_*aii 1 jenkins jenkins-pipeline

我有一个声明性詹金斯管道。我想在构建的“post”部分有一个条件。

詹金斯文件的帖子部分是否可以有“脚本块”?

当我这样说时,不会发生错误,但不会发送 hipchat 消息。即使说“如果主分支,hipchatSend,否则hipchatSend”,也不会发送hipchat消息。哎呀,如果我用“echo”语句替换 hipchatSend ,也不会发生任何事情。

post {
  always {
    script {
      if (env.BRANCH_NAME == "master") {
        hipchatSend color: 'RED', credentialId: 'HipChat-Jenkins-Token',
                    message: 'I am master branch',
                    room: 'Master-Commit-Room,',
                    sendAs: '', 
                    server: '',
                    v2enabled: true
      }
      if (env.BRANCH_NAME == "release/my-release") {
        hipchatSend color: 'RED', credentialId: 'HipChat-Jenkins-Token',
                    message: 'I am release branch',
                    room: 'Release-Commit-Room,',
                    sendAs: '',
                    server: '',
                    v2enabled: true
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我已经设置了 Jenkins 声明性管道,它按照您描述的方式在帖子部分成功使用了脚本块。

例子:

post {
    always {
        script {
            // arbitrary script code runs successfully here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...并且它按预期工作。您是否已验证您的 if 条件是否按预期评估?

注意:我在 Jenkins 2.138.2 上使用“Pipeline: Declarative”插件(id pipeline-model-definition)版本 1.3.2)。