Jenkins流水线获取提交日志

写在前

之前使用Jenkins pipeline的时候发现拿不到日志,使用multiple scms插件对应是日志变量获取日志的方式失效了,

但是查看流水线Pipeline Syntax发现checkout竟然有包含提交日志的选项,这里一定有办法获取到日志,苦于之前时间紧任务重,就先当它不能获取日志😄

最近在搞点东西,顺便想到了点关键词终于google到了,没看到其它博客里有写,就记录一下

实现原理

在pipeline块外部声名一个使用@NonCPS修饰的方法,从构建时变量currentBuild.changeSets中获取日志对象,遍历对象得到更新日志

Groovy代码

在pipeline的stages/stage/script块中调用这个方法就能得到日志了,写个最简单的demo示意

#!groovy
// Declarative //
pipeline {
	agent any
    stages {
        stage('拉代码') {
            steps {
                //这里就不写了,用pipeline syntax生成一份checkout命令
            }
        }
        stage('输出日志') {
            steps {
                script{
                    //调用方法得到日志 并 输出
                    def changeString = getChangeString()
                    echo "$changeString"
                }
            }
        }
    }
}

@NonCPS
def getChangeString() {
    MAX_MSG_LEN = 100
    def changeString = ""

    echo "Gathering SCM changes"
    def changeLogSets = currentBuild.changeSets
    for (int i = 0; i < changeLogSets.size(); i++) {
        def entries = changeLogSets[i].items
        for (int j = 0; j < entries.length; j++) {
            def entry = entries[j]
            truncated_msg = entry.msg.take(MAX_MSG_LEN)
            changeString += " - ${truncated_msg} [${entry.author}]\n"
        }
    }
    if (!changeString) {
        changeString = " - No new changes"
    }
    return changeString
}

currentBuild.changeSets数据结构伪代码

另外这里输出的部分不是changeSets的全部,下列伪代码参考了一些,又查API文档写了些,差不多够用了,不够的请参考api猜结构 :happy:

currentBuild.changeSets{
	items[{
    	msg //提交注释
    	commitId //提交hash值
    	author{ //提交用户相关信息
          	id
        	fullName
      	}
    	timestamp
    	affectedFiles[{ //受影响的文件列表
            editType{
                name
            } 
            path: "path"
    	}]
        affectedPaths[// 受影响的目录,是个Collection<String>
			"path-a","path-b"
        ]
  	}]
}

参考文章:

https://javadoc.jenkins.io/hudson/scm/ChangeLogSet.Entry.html#Entry--

https://support.cloudbees.com/hc/en-us/articles/217630098-How-to-access-Changelogs-in-a-Pipeline-Job-

https://issues.jenkins-ci.org/browse/JENKINS-30412?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东北小狐狸-Hellxz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值