I am using DevOps model, where i have built a pipeline for code build and deploy. In the entire process i want to log the Git commit id and commit message for that specific change commits.
@shruthibhaskar
shruthibhaskar committed just now
1 parent 51132c4 commit aedd3dc56ab253419194762d72f2376aede66a19
and commit message and description as below
test commit 3
test commit desc 3
how do i access these values of commit inside my jenkins pipeline, where i have configured a webhook for SCM polling?
git log --format=format:%s -1
(latest commit)
git log --format=format:%s -1 ${GIT_COMMIT}
(specific commit)
git --no-pager show -s --format='%s' ${GIT_COMMIT}
Jenkins git plugin set some environment variables for every build. You can find the list of them in git plugin site. In which it gives the SHA of the current commit in ${GIT_COMMIT} environment variable.
You can use the SHA along with git log to print commit message and any other details you required with --pretty option.
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
You can make a message based on currentBuild.changeSets
, for example:
@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}"
}
And call it:
stage('Clone repository') {
steps {
checkout scm
script {
sendChangeLogs()
}
}
}
P.S.
@NonCPS
needs to except serialization error.
I've found it here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With