如何在声明式管道中获取和更改git changelog的格式

时间:2019-12-08 17:17:42

标签: jenkins jenkins-declarative-pipeline

我在Jenkins中有一个声明性管道设置。在构建后的步骤中,我想将自上次构建以来的更改的格式精美的git changelog发送到Discord。为此,有一个插件很容易:

    post {
        always {
            discordSend result: currentBuild.result, title: 'Build ' + env.BUILD_NUMBER, link: env.BUILD_URL, webhookURL: DISCORD_WEBHOOK
        }
        failure {
            discordSend result: currentBuild.result, title: 'Failed Build ' + env.BUILD_NUMBER, link: env.BUILD_URL, webhookURL: DISCORD_FAILED_WEBHOOK            
        }
    }

它看起来像这样:

enter image description here

此链接指向我的Jenkins服务器,该服务器自上次构建以来就有 详细的更改日志。但是,我还要将此变更日志添加到此Discord消息中。

我无法弄清楚如何为声明性管道执行此操作。

  1. 如何获取变更日志?
  2. 如何为Markdown 101格式化?

1 个答案:

答案 0 :(得分:1)

这是检查变更集的一个示例,这可能会使您沿着正确的路径前进:

JPanel

或者,您可以尝试从Pipeline examples中进行以下操作:

Canvas

将其格式化为Markdown并通过@NonCPS def printCurrentBuildChangesets() { 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] echo "${entry.commitId} by ${entry.author} on ${new Date(entry.timestamp)}: ${entry.msg}" def files = new ArrayList(entry.affectedFiles) for (int k = 0; k < files.size(); k++) { def file = files[k] echo "${file.editType.name} ${file.path}" } } } } 附加为练习;)