summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.yml.example9
-rw-r--r--lib/gitlab_config.rb4
-rw-r--r--lib/gitlab_update.rb17
3 files changed, 28 insertions, 2 deletions
diff --git a/config.yml.example b/config.yml.example
index 6b0dbeb..26aa28c 100644
--- a/config.yml.example
+++ b/config.yml.example
@@ -14,3 +14,12 @@ repos_path: "/home/git/repositories"
# File used as authorized_keys for gitlab user
auth_file: "/home/git/.ssh/authorized_keys"
+
+# Redis settings used for pushing commit notices to gitlab
+redis:
+ bin: /usr/bin/redis-cli
+ host: 127.0.0.1
+ port: 6379
+ # socket: /tmp/redis.socket # Only define this if you want to use sockets
+ namespace: resque:gitlab
+
diff --git a/lib/gitlab_config.rb b/lib/gitlab_config.rb
index 6cfee5d..ac6cc19 100644
--- a/lib/gitlab_config.rb
+++ b/lib/gitlab_config.rb
@@ -22,4 +22,8 @@ class GitlabConfig
def http_settings
@config['http_settings'] ||= {}
end
+
+ def redis
+ @config['redis'] ||= {}
+ end
end
diff --git a/lib/gitlab_update.rb b/lib/gitlab_update.rb
index 8282897..a486ecc 100644
--- a/lib/gitlab_update.rb
+++ b/lib/gitlab_update.rb
@@ -3,9 +3,11 @@ require_relative 'gitlab_net'
class GitlabUpdate
def initialize(repo_path, key_id, refname)
+ config = GitlabConfig.new
+
@repo_path = repo_path.strip
@repo_name = repo_path
- @repo_name.gsub!(GitlabConfig.new.repos_path.to_s, "")
+ @repo_name.gsub!(config.repos_path.to_s, "")
@repo_name.gsub!(/\.git$/, "")
@repo_name.gsub!(/^\//, "")
@@ -15,6 +17,8 @@ class GitlabUpdate
@oldrev = ARGV[1]
@newrev = ARGV[2]
+
+ @redis = config.redis
end
def exec
@@ -49,7 +53,16 @@ class GitlabUpdate
end
def update_redis
- command = "env -i redis-cli rpush 'resque:gitlab:queue:post_receive' '{\"class\":\"PostReceive\",\"args\":[\"#{@repo_path}\",\"#{@oldrev}\",\"#{@newrev}\",\"#{@refname}\",\"#{@key_id}\"]}' > /dev/null 2>&1"
+ if !@redis.empty? && !@redis.has_key?("socket")
+ redis_command = "#{@redis['bin']} -h #{@redis['host']} -p #{@redis['port']}"
+ elsif !@redis.empty? && @redis.has_key?("socket")
+ redis_command = "#{@redis['bin']} -s #{@redis['socket']}"
+ else
+ # Default to old method of connecting to redis for users that haven't updated their configuration
+ redis_command = "env -i redis-cli"
+ end
+
+ command = "#{redis_command} rpush '#{@redis['namespace']}:queue:post_receive' '{\"class\":\"PostReceive\",\"args\":[\"#{@repo_path}\",\"#{@oldrev}\",\"#{@newrev}\",\"#{@refname}\",\"#{@key_id}\"]}' > /dev/null 2>&1"
system(command)
end
end