Over a million developers have joined DZone.

Git Pre Recieve Hook For Integrity

· Agile Zone

Learn more about how DevOps teams must adopt a more agile development process, working in parallel instead of waiting on other teams to finish their components or for resources to become available, brought to you in partnership with CA Technologies.

I’m getting married rather soon so time has been somewhat short (in a good way) for just hacking on stuff, but I’ve finally found a little bit of time to play with something I’ve been mulling over for a while. Namely a continuous deployment workflow using the integrity continous integration server.

I’m hoping to have an incredibly simple but fully operation example available at some point – mainly to act as a good discussion point. For now here’s my current pre-receive hook.

#!/usr/bin/env ruby

require 'rubygems'
require 'grit'
require 'nokogiri'
require 'open-uri'

# This is a pre-receive git hook designed to be part of a continuous
# deployment workflow using the Integrity continuous integration server

INTEGRITY = 'http://localhost:9292'
PROJECT = 'site'

# 1. Check if the build is currently broken
# 2. If it's broken check if the commit messages starts with
# [BUILD] and if so trigger a build
# 3. If it's broken and all messages don't have the prefix
# then stop the push
# 4. If the build is fine then let everything through

doc = Nokogiri::HTML(open("#{INTEGRITY}/#{PROJECT}"))
doc.css('div#last_build h1').each do |heading|
  content = heading.content.split
  @status = content[-1]
end

if @status == "failed"
  puts "Build currently broken, to force use the [BUILD] commit message prefix"
  old_rev, new_rev, ref_name = STDIN.gets.split

  repo = Grit::Repo.new(".")

  commits = repo.commits_between(old_rev, new_rev)

  commits.reverse.each do |c|
    short, long = c.message.split(/\n+/, 2)
    if short.slice(0..7) != "[BUILD]
puts "Cancelling push"
exit 1
end
end
end

 

Discover the warning signs of DevOps Dysfunction and learn how to get back on the right track, brought to you in partnership with CA Technologies.

Topics:

Published at DZone with permission of Gareth Rushgrove, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}