簡體   English   中英

如何在 Jenkins 管道內使用 GitHub 提交消息和提交 ID?

[英]How to use GitHub commit message and commit id inside Jenkins pipeline?

我正在使用 DevOps 模型,我在其中構建了一個用於代碼構建和部署的管道。 在整個過程中,我想記錄該特定更改提交的 Git 提交 ID 和提交消息。

@shruthibhaskar
shruthibhaskar committed just now 
1 parent 51132c4 commit aedd3dc56ab253419194762d72f2376aede66a19

並提交消息和描述如下

test commit 3

test commit desc 3

我如何在我的 jenkins 管道中訪問這些提交值,在那里我為 SCM 輪詢配置了一個 webhook?

git log --format=format:%s -1 (最新提交)

git log --format=format:%s -1 ${GIT_COMMIT} (具體提交)

git --no-pager show -s --format='%s' ${GIT_COMMIT}

Jenkins git 插件為每個構建設置了一些環境變量。 你可以在git plugin site 中找到它們的列表。 它在${GIT_COMMIT}環境變量中給出了當前提交的 SHA。

您可以使用 SHA 和 git log 來打印提交消息和您需要使用 --pretty 選項的任何其他詳細信息。

git log --oneline -1 ${GIT_COMMIT} # prints SHA and title line
git log --format="medium" -1 ${GIT_COMMIT} # print commit, author, date, title & commit message

您可以根據currentBuild.changeSets制作消息,例如:

@NonCPS
def sendChangeLogs() {
    def commitMessages = ""
    def formatter = new SimpleDateFormat('yyyy-MM-dd HH:mm')
    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]
            commitMessages = commitMessages + "${entry.author} ${entry.commitId}:\n${formatter.format(new Date(entry.timestamp))}: *${entry.msg}*\n" 
        }
    }
    slackSend color: "good", message: "Job: `${env.JOB_NAME}`. Starting build with changes:\n${commitMessages}"
}

並稱之為:

stage('Clone repository') {
    steps {
        checkout scm

        script {
            sendChangeLogs()
        }
    }
}

聚苯乙烯

@NonCPS需要@NonCPS序列化錯誤。 我在這里找到

您可以使用 gitlab scm 的個人令牌卷曲 api 以獲取提交消息和許多其他信息。 在這里,您需要創建個人令牌並通過秘密文本將其保存在 jenkins 中,然后在管道階段使用它。

curl --header "Private-Token: asdfasdfasdf" https://gitlab.com/api/v4/projects/2445653/repository/commits/master

您可以查看文檔以獲取更多信息。 https://docs.gitlab.com/ee/api/commits.html

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM