jenkins pipeline获取变更记录
时间: 2025-05-09 11:21:21 浏览: 44
### 如何在 Jenkins Pipeline 中获取变更记录
在 Jenkins Pipeline 的上下文中,可以通过 `currentBuild.changeSets` 或者使用 Groovy 脚本访问当前构建的变更集来获取变更日志。以下是具体的实现方法:
#### 使用 `currentBuild.changeSets`
`currentBuild.changeSets` 是一个内置变量,用于存储当前构建中的所有变更信息。它返回的是一个列表对象,其中包含了每次提交的相关数据。
```groovy
pipeline {
agent any
stages {
stage('Get Change Log') {
steps {
script {
echo "Change Logs:"
currentBuild.changeSets.each { changeSet ->
changeSet.items.each { item ->
echo "${item.msg} by ${item.author}"
}
}
}
}
}
}
}
```
上述脚本会遍历所有的变更集合,并打印每条提交的消息以及作者的信息[^1]。
#### 使用 `changelog.xml` 文件
另一种方式是从 Jenkins 自动生成的 XML 格式的变更日志文件中读取变更信息。此文件通常位于 `${WORKSPACE}/changelog.xml` 下。
```groovy
pipeline {
agent any
stages {
stage('Read Changelog from File') {
steps {
script {
def changelogFile = readFile(file: 'changelog.xml')
echo "Changelog content:\n${changelogFile}"
}
}
}
}
}
```
需要注意的是,在某些情况下可能需要手动创建该文件或将路径调整至实际位置[^2]。
#### 结合邮件通知发送变更日志
如果希望将这些变更日志作为电子邮件的一部分发送出去,则可以在 `post` 部分定义邮件内容模板并将变更日志嵌入进去。
```groovy
pipeline {
agent any
post {
always {
emailext (
subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER})",
body: """<p>Build Result: ${currentBuild.result}</p>
<h3>Changes:</h3><ul>${CHANGES}</ul>""",
to: "[email protected]"
)
}
}
stages {
stage('Collect Changes') {
steps {
script {
CHANGES = ""
currentBuild.changeSets.each { cs ->
cs.items.each { ci ->
CHANGES += "<li>${ci.msg} by ${ci.author}</li>"
}
}
}
}
}
}
}
```
这里我们利用了一个全局变量 `CHANGES` 来累积所有的变更描述,并将其注入到 HTML 格式的邮件正文中[^3]。
---
####
阅读全文
相关推荐



















