First attempt at a post-receive hook that posts directly to Resque

This commit is contained in:
Ariejan de Vroom 2011-12-13 01:03:26 +01:00
parent 1c9b9b7a3b
commit bc0155fbaa
5 changed files with 30 additions and 14 deletions

View file

@ -31,6 +31,17 @@ class Repository
project.id
end
# repo.update_hook('post-receive', File.read('some-hook'))
def update_hook(name, content)
hook_file = File.join(project.path_to_repo, 'hooks', name)
File.open(hook_file, 'w') do |f|
f.write(content)
end
File.chmod(0775, hook_file)
end
def repo
@repo ||= Grit::Repo.new(project.path_to_repo)
end

View file

@ -0,0 +1,5 @@
class PostReceive
def self.perform(reponame, oldrev, newrev, ref)
puts "[#{reponame}] #{oldrev} => #{newrev} (#{ref})"
end
end

View file

@ -13,18 +13,6 @@
ActiveRecord::Schema.define(:version => 20111207211728) do
create_table "features", :force => true do |t|
t.string "name"
t.string "branch_name"
t.integer "assignee_id"
t.integer "author_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "version"
t.integer "status", :default => 0, :null => false
end
create_table "issues", :force => true do |t|
t.string "title"
t.integer "assignee_id"

View file

@ -50,7 +50,7 @@ module Gitlabhq
ga_repo.save
end
#update or create
#update or create
def update_keys(user, key)
File.open(File.join(@local_dir, 'gitolite/keydir',"#{user}.pub"), 'w') {|f| f.write(key.gsub(/\n/,'')) }
end

12
lib/post-receive-hook Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
# This file was placed here by Gitlab. It makes sure that your pushed commits
# will be processed properly.
while read oldrev newrev ref
do
# For every branch or tag that was pushed, create a Resque job in redis.
pwd=`pwd`
reponame=`basename "$pwd" | cut -d. -f1`
env -i redis-cli rpush "resque:queue:post-receive" "{\"class\":\"PostReceive\",\"args\":[\"$reponame\",\"$oldrev\",\"$newrev\",\"$ref\"]}" > /dev/null 2>&1
done