【问题标题】:How to get a Jenkins Pipeline build to show change history (changes) for a specific branch如何获得 Jenkins Pipeline 构建以显示特定分支的更改历史记录(更改)
【发布时间】:2020-02-14 20:21:17
【问题描述】:

我正在使用声明性管道和 groovy 脚本来检查我的分支。我使用结帐步骤结帐:

    [$class: 'GitSCM', 
    branches: [[name: "${selectedBranch}"]], 
    browser: [$class: 'BitbucketWeb', repoUrl: 'myURL'], 
    doGenerateSubmoduleConfigurations: false, 
    extensions: 
    [[$class: 'CloneOption', noTags: false, reference: "${cloneReference}", shallow: true, timeout: 5]], 
    submoduleCfg: [], 
    userRemoteConfigs: [[url: "${projectDetails.repositoryAddress}"]]])

而且效果很好。但是,在查看更改历史记录时,它显示的是我的共享库的历史记录,而不是签出的实际分支的历史记录。这意味着我正在获取我的 jenkins groovy 更改的所有历史记录,但没有正在构建的实际解决方案/源的历史记录。我想不出办法来克服这个问题。

在我的 Jenkins 工作中,我看到了这一点:

Started by user Me

    Revision: 53eb41e0c05fd4cb466268947102990b2b14354e
GroovyImplementation
    Revision: 825d8201904b000f479ebc91c9d244cfb956dd85
refs/remotes/origin/releases/release-2.18

在“更改”页面上,我看到“GroovyImplementation”的更改(其中通常没有更改),但我想要更改“refs/remotes/origin/releases/release-2.18”,这是有意义的更改所在。

同样,在舞台视图中,我看到的是“GroovyImplementation”的提交次数,而不是发布分支。

如何在不使用多管道构建的情况下显示发布分支的签出信息?

【问题讨论】:

  • 我进行了这些更改,但没有任何效果。截至今天早上,我的 Jenkins 是最新版本,所有插件都已更新。它仍然显示共享库的更改历史记录,并且没有显示通过“结帐”管道步骤更新的分支的历史记录。 Jenkins 在按照其他帖子中的建议激活该功能后重新启动。我不确定我应该在这里还是在其他线程上制作我的 cmets。另一个线程似乎只指抑制库更改,我的问题的大部分是在结帐时没有获得分支的提交
  • 所以,只是为了说清楚。您是否希望每次运行该作业时都针对特定分支计算更改?
  • 我希望它显示针对非共享库克隆/编译/测试的分支的更改。在上面的示例中,“GroovyImplementation”是共享库,我对此进行了更改。 “.../releases/release-2.18”是该作业实际克隆、构建、测试、发布等的分支,但我没有更改历史记录。这有意义吗?

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline


【解决方案1】:

由于您使用的是分支selectedBranch - 您想要的应该由SCM step plugin 支持开箱即用(changelog 默认设置为true)。

但是,我发现它不能正常工作,所以您可以使用此插件的扩展名:[$class: 'ChangelogToBranch', options: [compareRemote: 'myURL', compareTarget: "${selectedBranch}"]]

如您所见,extensions: 得到一个数组数组,因此您只需将此扩展添加到您现有的,例如

extensions: 
[
  [$class: 'CloneOption', noTags: false, reference: "${cloneReference}", shallow: true, timeout: 5], 
  [$class: 'ChangelogToBranch', options: [compareRemote: 'myURL', compareTarget: "${selectedBranch}"]]
],

【讨论】:

  • 要生成“ChangelogToBranch”行,您可以使用 Jenkins 的 Pipeline Syntax Snippet Generator,选择名为“checkout: Check out from version control”的示例步骤,然后在“Additional Behaviours”下单击“添加”并添加名为“针对特定分支计算更改日志”的行为。然后,当您填写字段并单击“生成管道脚本”时,将为您配置“ChangelogToBranch”字符串。
【解决方案2】:

默认情况下,更改日志是根据以前的构建计算的,您可以在此处阅读它https://github.com/jenkinsci/git-plugin#changelog-extensions。如果您希望针对特定分支计算更改日志,您可以通过添加其他行为 Calculate changelog against a specific branch

来显式配置您的作业

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 2018-07-20
    • 2021-09-03
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多