diff --git a/build.gradle b/build.gradle
index 46b51b78ef49c7946d887f4bf78ea646ccb92dff..fda5e3af11a8507e29570c140f42708d31fc8f0e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -109,25 +109,6 @@ def getDate() {
 	return formattedDate
 }
 
-def readGitTags() {
-	def tags = []
-	def proc = "git tag".execute()
-	proc.in.eachLine { line -> tags += line}
-	Collections.reverse( tags )
-
-	tags
-}
-
- def readGitMessages(String tag, String prevTag) {
-	def message = []
-	def range = (prevTag == null || prevTag == "") ? "$tag" : "$prevTag..$tag"
-	def proc = "git log $range --oneline --no-merges".execute()
-	proc.in.eachLine { line -> message += line }
-	proc.err.eachLine { line -> println line }
-
-	message
-}
-
 // Detailled settings (dependencies, tasks, task configuration, ...)
 
 repositories {
@@ -299,27 +280,37 @@ vagrantDestroy.doFirst {
 // Custom task definitions
 
 task changelog << {
+	def grgit = Grgit.open(project.file('.'))
 	def fileChangelog = new File('CHANGELOG.md')
-	def tags = ["HEAD"] + readGitTags()
-	def numTags = tags.size();
-	def prevTag
-	def tag
+	def tags = ["HEAD"]
+
+	grgit.tag.list().reverse().each{ t ->
+		tags += t.getName()
+	}
 
 	fileChangelog.delete()
-	for (int i = 0; i < numTags; i++) {
-		tag = tags[i];
-		prevTag = tags[i+1]
-
-		fileChangelog << "- Version ${tag}:\n".replaceAll("Version HEAD", "Upcoming version")
-		def message = readGitMessages(tag, prevTag)
-		message.each{fileChangelog << "  - $it\n"}
-		fileChangelog << "\n"
+	def builder
+	def numTags = tags.size()
+	for (int i = 0; i < numTags - 1; i++) {
+		builder = new StringBuilder()
+		builder.append("- Version ${tags[i]}:\n".replaceAll('Version HEAD', 'Upcoming version'))
+
+		grgit.log {
+			range tags[i+1], tags[i];
+		}.inject(builder) { bldr, commit ->
+			bldr.append('  - ')
+			bldr.append(commit.shortMessage)
+			bldr.append('\n')
+		}
+
+	    fileChangelog << builder.toString()
 	}
 }
 
 task changelog2Git << {
-  def grgit = Grgit.open(project.file('.'))
-  grgit.add(patterns: ['CHANGELOG.md'])
+	def grgit = Grgit.open(project.file('.'))
+	grgit.add(patterns: ['CHANGELOG.md'])
+	grgit.commit(message: 'Changelog updated (by jenkins)')
 }
 
 task cleanAfterDaily(type: Delete) {