Spring中的aware接口详情
477
2022-11-02
Jenkins 进阶 05 Generic Webhook 实践优化 获取提交信息
之前gitlab和Jenkins已经集成好了,现在需要来解析一些数据,因为提交构建需要有些值去拿的。(通过获取post请求当中body当中的数据)
比如可以获取谁提交的,哪个分支提交的,用户Email和commitid。
"user_username": "root""ref": "refs/heads/master" "user_email": """checkout_sha": "1d6ed28d4536ce9313e57b47a821753333aab1da"
webHookData = readJSON text: "${webHookData}"userName = webHookData["user_username"]userEmail = webHookData["user_email"]branchName = webHookData["ref"] - "refs/heads/"commitID = webHookData["checkout_sha"]currentBuild.displayName = commitIDcurrentBuild.description = "Trigger by user ${userName} \n branch: ${branchName}"pipeline { agent any stages { stage('resdJson') { steps { println("the user name is ${userName}") println("the trigger branch name is ${branchName}") println("the user email is ${userEmail}") } } }}[Pipeline] readJSON[Pipeline] nodeRunning on build-01 in /data/cicd/jenkinsagent/workspace/Gitlab-Webhook-Trigger[Pipeline] {[Pipeline] stage[Pipeline] { (resdJson)[Pipeline] echothe user name is root[Pipeline] echothe trigger branch name is master[Pipeline] echothe user email is [Pipeline] }[Pipeline] // stage[Pipeline] }[Pipeline] // node[Pipeline] End of PipelineFinished: SUCCESS
一个动态传递分支参数的示例
首先,Jenkins触发器中配置一个request参数, runOpts作为构建类型判断。
第二步, Gitlab webhook中指定此参数。
第三步, 构建测试。
/*支持自动构建和手动构建:1. 在触发添加了一个request参数 runOpts 2. Gitlab webhook中添加runOpts参数=gitlab3. JenkinsPipeline 根据runOpts值进行运行*///gitlab触发try { if ( "${runOpts}" == "gitlab"){ //自动 // 操作webhook数据 println("${WebHookData}") webHookData = readJSON text: "${WebHookData}" env.userName = webHookData["user_username"] env.userEmail = webHookData["user_email"] env.branchName = webHookData["ref"] - "refs/heads/" env.srcUrl = webHookData["project"]["git_ env.commitID = webHookData["checkout_sha"] currentBuild.description = "Trigger by user ${env.userName} \n branch: ${env.branchName}" currentBuild.displayName = env.commitID } } catch(e){ println(e) env.userEmail = "2560350642@qq.com" currentBuild.description ="Trigger by 手动触发 \n branch: ${env.branchName}"}
try 语句块中的是解析Gitlab传递过来的数据的,然后将 checkout 中的分支字符串和仓库地址使用变量替换。 branchName 和 srcUrl 都是解析的Gitlab hook数据。
添加 try 语句块的目的也是为了忽略这些错误的, 因为手动触发是拿不到gitlab 传递的数据的,这是两种不同的触发方式所以一定要注意。 所以最后我们在UI定义两个参数作为手动触发使用的。
效果:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~