在多个SCM设置中仅通知一个存储库

时间:2019-07-24 13:08:30

标签: git jenkins version-control

我正在学习Jenkins,并尝试使用StashNotifier通知Stash存储库A的构建状态,即SUCCESSFAILED。由于存储库A取决于存储库B和存储库C,因此我使用以下代码将存储库BC也插入到构建工作区中。

checkout resolveScm(source: [$class: 'GitSCMSource', remote: "ssh://git@stash.org:8888/group/repo_B.git",
                                   credentialsId: '...omitted...', includes: '*', excludes: '',
                                   extensions: [[$class: 'SubmoduleOption', parentCredentials: true, recursiveSubmodules: true]]],
                          targets: [BRANCH_NAME, "${java.net.URLEncoder.encode(env.BRANCH_NAME, "UTF-8")}"])

checkout resolveScm(source: [$class: 'GitSCMSource', remote: "ssh://git@stash.org:8888/group/repo_C.git",
                                   credentialsId: '...omitted...', includes: '*', excludes: '',
                                   extensions: [[$class: 'SubmoduleOption', parentCredentials: true, recursiveSubmodules: true]]],
                          targets: [BRANCH_NAME, "${java.net.URLEncoder.encode(env.BRANCH_NAME, "UTF-8")}"])

StashNotifier的配置如下:

step([$class: 'StashNotifier'])

但是,在构建之后,将通知所有三个存储库。是否只能通知仓库A以及如何通知?

1 个答案:

答案 0 :(得分:0)

根据StashNotifier的source code,如果在使用StashNotifier时未给出commitSha1,则将收集所有提交,因此将通知所有存储库。只要指定了commitSha1,就只会通知指定的仓库。

首先,使用

获取提交哈希
checkout scm
env.GIT_COMMIT = sh(script: "git rev-parse HEAD", returnStdout: true).trim()

然后在管道中,通过以下方式通知隐藏:

step([$class: 'StashNotifier',
      commitSha1: "${env.GIT_COMMIT}"])