【问题标题】:How to make jenkins build status badge dynamically show the branch of the its file is in如何使詹金斯构建状态徽章动态显示其文件所在的分支
【发布时间】:2021-01-30 02:53:40
【问题描述】:

我不确定总结是否清楚。我想要做的是创建一个 jenkins 构建状态徽章 url,它能够以某种方式找出它所在的 Git 分支,并动态地将正确的分支后缀添加到 url。

我想这样做,这样我就可以创建一个自述文件,该文件始终显示该 repo 的 masterdevelop<branch-i'm-looking-at> jenkins 构建,而无需手动更新每个分支的徽章。

我知道如何创建特定于分支的构建状态徽章。 Jenkins 会自动为您构建 markdown URL。例如我的一个develop 分支看起来像:

[![Build Status](https://jenkins.mycompany.com/path/to/build/develop/badge/icon?subject=develop)]
(https://jenkins.mycompany.com/path/to/build/develop/)

我可以想象它会是使用 ${BRANCH_NAME} jenkins env var 的东西,但我想不出如何创建它。我对 git 钩子或其他脚本的经验还不够,甚至无法开始想办法。

有人做过吗?

【问题讨论】:

    标签: git jenkins github


    【解决方案1】:

    我不会创建README,而是维护 4 个READMEs,每个分支一个,每个分支都有自己的 静态 Jenkins URL,为自己的分支量身定制。

    例如,develop 分支中的 README 将具有 URL:

    [![Build Status](https://jenkins.mycompany.com/path/to/build/develop/badge/icon?subject=develop)]
    (https://jenkins.mycompany.com/path/to/build/develop/)
    

    此外,这些是多分支管道,分支会来来去去。

    那么我会考虑一个内容过滤器驱动程序。

    这意味着只有 一个 README 文件中包含占位符值。
    (“占位符值”:要替换的字符串。例如:@URL@

    这允许您在本地生成正确的README 文件,并在git clone/git checkout 上自动生成。

    生成脚本将:

    • 检测当前签出的分支
    • README 中的占位符值替换为正确的README,使用正确的“构建状态”URL

    为此,请注册(在.gitattributes declaration 中)content filter driver

    (图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)

    smudge 脚本将生成(在git checkoutgit switch 上自动生成)实际的README 文件,如上所述。
    该脚本可以使用:

    branch=$(git rev-parse --symbolic --abbrev-ref HEAD)
    

    在“git smudge/clean filter between branches”查看完整示例。

    我还将添加一个clean 过滤器以恢复原始 README 内容(占位符值),以便不引入(从git diff 角度)任何差异。

    回顾一下:

    • git checkout/restore 上,smudge 脚本在.gitattributes 文件中声明会自动激活,并将占位符值替换为正确的 URL 和分支名称
    • git diff/commit 上,.gitattributes 文件中声明的clean 脚本会自动激活,并将生成的 URL 替换为原始占位符值。

    【讨论】:

    • 谢谢你,但我不认为这是一个答案。正如我在原始问题中所述,我已经知道如何创建特定于分支的构建状态徽章。 Jenkins 会自动为您构建 markdown URL。维护多个自述文件不是可扩展的解决方案。此外,这些是多分支管道,分支会来来去去。只有 developmaster 是静态的。我需要一个动态解决方案。
    • @MaxCascone 动态解决方案?肯定的事。我已经编辑了答案以提出一个可能的实现。
    • 现在这看起来非常有趣。期待尝试,并会尽快回来。
    • 我终于通读了这篇文章,我意识到这不是答案。这是我没有正确解释问题的错。我需要的是,将在 GitHub Web UI 中显示 URL 中的分支名称,而无需为每个分支提交唯一文件。是不是更清楚了?
    • @MaxCascone 确实更清晰,但不如创建自述文件容易实现(如原始问题中所述)。我没有立竿见影的解决方案,但会继续寻找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2021-11-12
    • 2017-01-05
    相关资源
    最近更新 更多