如何让 jenkins 构建状态徽章动态显示其文件所在的分支

Max*_*one 5 git github jenkins

我不确定摘要是否明确说明了这一点。我想要做的是创建一个 jenkins 构建状态徽章 url,它将以某种方式能够找出它所在的 Git 分支,并动态地向 url 添加正确的分支后缀。

我想这样做,这样我就可以创建一个自述文件,它始终显示master,develop和<branch-i'm-looking-at>詹金斯建立是回购,而无需手动更新,每个分支的徽章。

我知道如何创建特定于分支的构建状态徽章。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/)
Run Code Online (Sandbox Code Playgroud)

我可以想象它会是使用${BRANCH_NAME}jenkins env var 的东西,但我想不出如何创建它。我对 git hooks 或其他脚本的经验不足,甚至无法开始想出一种方法来做到这一点。

有没有人做过这个?

Von*_*onC 6

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

例如,分支中的 URL为README:develop

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

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

然后我会考虑内容过滤器驱动程序。

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

这允许您在本地生成正确的文件,并在/README上自动执行此操作。git clonegit checkout

生成脚本将:

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

为此,请注册(在.gitattributes声明中)内容过滤器驱动程序。

弄脏 (图片来自《自定义 Git - Git 属性》,来自《Pro Git book》)

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

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)
Run Code Online (Sandbox Code Playgroud)

git smudge请参阅“ /clean在分支之间过滤”的完整示例。

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

https://git-scm.com/book/en/v2/images/clean.png

回顾一下:

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