我一直在努力寻找一种方法,以将Jenkins生成的更改列表(通过SVN拉取)包括到我们的Testflight注释中。我正在使用Testflight插件,该插件具有用于注释的字段- 但jenkins似乎没有嵌入该信息的任何参数/令牌。
有谁能完成这样的运气吗?
看起来TestFlight插件会将变量扩展到“构建说明”字段中,所以问题是:如何将当前构建的更改获取到环境变量中?
据我所知,Subversion插件没有通过环境变量提供此信息。但是,所有Jenkins SCM插件都集成了变更日志信息,如您通过Web UI中每个构建版本的“变更”链接所看到的。
即使正在进行构建,也可以通过Jenkins API获得此信息。
例如,如果在运行此命令的位置添加“执行外壳”构建步骤:
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插件。
在这种情况下,您可以将更改日志文本写入具有以下内容的临时文件:
CHANGELOG="New in this build:\n- First commit.\n- Second commit."
然后,通过使用带有“ 环境属性文件路径”选项的构建步骤来加载该文件,该$CHANGELOG变量将存在于您的环境中,并一直持续到构建结束,从而允许您在“构建说明”字段中使用它。
$CHANGELOG
注意: 我自己没有使用TestFlight插件(尽管我快速浏览了代码),并且仅使用Git存储库测试了changes API。同样,我也没有测试应如何使用EnvInject插件编码换行符,否则可能会引起问题。