Changelog with GIT and JIRA: Creating JIRA filter URL based on git commits between two revisions with bash
I am working on a library and a jenkins plugin doing this right, but until then, here is a shell script which creates the URL to a JIRA filter containing the tickets mentioned in all commit messages between the two given revisions.
Besides git
and the standard command line tools (grep
, sed
, tr
, egrep
, sort
, uniq
) it needs gawk
installed on your system.
Unfortunately I didn't manage to get the variables replaces within gawk's gensub function. If you know how, drop me a line. As a workaround I am sure there is a way with temporary files and/or evaluating a string.
This snippets tries to open your browser if there is any URL. Delete the | xargs xdg-open
(and the trailing \
the line before) if you don't want this.
Of course, this script assumes you are in a directory under git control. Assuming you have checked out the Jenkins source code, that's how to get the release notes in form of a JIRA filter between their latest two releases:
$ git log --pretty=oneline jenkins-1.616..jenkins-1.617 | egrep '(JENKINS)-[[:digit:]]' | gawk '{print gensub(/.*(JENKINS)-([0-9]{1,5}).*/, "\\1-\\2", "g")}' | sort | uniq | tr '\n' ',' | awk '{print "https://issues.jenkins-ci.org/issues/?jql=key%20in%20(" $0 ")"}' | sed 's/,)/)/'
https://issues.jenkins-ci.org/issues/?jql=key%20in%20(JENKINS-27739,JENKINS-28654,JENKINS-28704)
This is the clickable resulting link: https://issues.jenkins-ci.org/issues/?jql=key in (JENKINS-27739,JENKINS-28654,JENKINS-28704)