jenkins为build设置description
需求: 在持续集成过程中,随着feature的不断加入,版本越来越多,你希望每个build成功之后能显示一些很重要的信息,比如版本号,当前该build支持的主要feature等。这样不论是开发还是测试,在拿build的时候都能一眼就看出该build对应的版本号以及主要的feature。这里主要介绍两种方式:一.通过调用jenkins内部命令
需求:
在持续集成过程中,随着feature的不断加入,版本越来越多,你希望每个build成功之后能显示一些很重要的信息,比如版本号,当前该build支持的主要feature等。
这样不论是开发还是测试,在拿build的时候都能一眼就看出该build对应的版本号以及主要的feature。
这里主要介绍两种方式:
一.通过调用jenkins内部命令
调用Jenkins命令设置job的描述信息。
curl -d "description=value2" --user $AN_ACCESS_KEY "$BUILD_URL/submitDescription"
上面的--user $AN_ACCESS_KEY " 应该为--user admin:admin,但为了信息安全在pipeline中先定义
environment {
AN_ACCESS_KEY = credentials('ca9d1fb6-dafb-4d19-9a74-a649a4454867')
}
python调用的话可以参考:
r = requests.get(os.environ.get("BUILD_URL") + "submitDescription?",
auth=(username, password),
params={"description": desc}, timeout=30)
二.通过jenkins的description setter plugin
安装之后在在configure页面的Add post-build action中就可以看到有一项是Set build description了。
通常我们需要设置Regular expression和Description两项。 这两项的具体含义可以通过点击它们右边的问号来看注释。
用description setter plugin,网上的例子都是一行的,比如有一行版本信息:[version]Component1 Version: 1.2, Component2 Version: 1.6
我们可以将Regular expression设置成 \ [version\ ](.*),(.*), 将Description设置成\1<br>\2, (这里\ 和 方括号之间没有空格,如果我把空格去掉,blog的格式就变了)
这样就会在build的description中显示
Component1 Version: 1.2
Component2 Version: 1.6
我遇到的问题是,我们有一个文件,包含了很多行的信息,希望将它们显示到每一个build的descrption中。
一开始没搞明白\n是什么意思,还以为这个plugin会匹配每一行,然后\1就对应第一行匹配的,\2对应第二行匹配的,其实不是这样的。
它只会去匹配一行,匹配了之后,如果正则表达式中有多个capture的括号,则可以用\1 \2来对应这些括号。
那如果我们想把文件中的多行信息都capture到该怎么办呢?
解决办法:
1. 我们在shell中将该文件按一定的格式输出: 将换行符替换成<br>,并将所有行join成一行,最后再打印出来。
打印的时候也加上了一个标识符[DESC],以便正则去识别。
cat Install/ChangeLog.txt | perl -e "@s=<>; map{s#\r\n#<br>#;} @s; print '[DESC]'; print join '', @s;"
2. Regular expression很简单:^\ [DESC\ ](.*) (这里\ 和 方括号之间没有空格)
3. Description也很简单:\1
这样就OK了。
通过一些简单地技巧就可以解决多行的description的显示了。
脚本强大,plugin威武
更多推荐
所有评论(0)