我一直在绞尽脑汁地试图找到一种方法,将 Jenkins 生成的更改列表(来自 SVN pull)包含到我们的 Testflight 笔记中。我正在使用 Testflight 插件,它有一个注释字段 - 但 Jenkins 似乎没有创建任何参数/ token 来嵌入该信息。
有人有幸完成这样的事情吗?
最佳答案
看起来 TestFlight 插件扩展了放置在“构建注释”字段中的变量,所以问题是:我们如何将当前构建的更改获取到环境变量中?
据我所知,Subversion 插件不通过环境变量提供此信息。但是,所有 Jenkins SCM 插件都集成了更改日志信息,您可以通过每个版本的 Web UI 中的“更改”链接看到。
即使构建正在进行中,也可以通过 Jenkins API 获取此信息。
例如,如果您在运行此命令的位置添加“执行 shell”构建步骤:
curl -s "http://jenkins/job/my-job/$BUILD_NUMBER/api/xml?wrapper=changes&xpath=//changeSet//comment"
您将获得与此类似的 XML 文档:
<changes>
<comment>First commit.</comment>
<comment>Second commit.</comment>
</changes>
然后,您可以按照自己喜欢的方式格式化此信息,并将其放入环境变量中,然后可以在 TestFlight“构建注释”部分中引用该环境变量。
但是,默认情况下,在构建步骤中设置环境变量并不持久 - 为此需要使用 EnvInject Plugin .
在这种情况下,您可以将更改日志文本写入临时文件,其内容如下:
CHANGELOG="New in this build:\n- First commit.\n- Second commit."
然后,通过使用 Environment Properties File Path 的构建步骤如果选择加载此文件,$CHANGELOG
变量将存在于您的环境中并持续到构建结束,从而允许您在“构建注释”字段中使用它。
注意:我自己没有使用 TestFlight 插件(尽管我快速浏览了代码),并且我只使用 Git 存储库测试了更改 API。同样,我没有测试如何使用 EnvInject 插件对换行符进行编码,因此这可能会导致问题。
关于svn - 访问 Jenkins 中的构建变更日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11823826/