As we reevaluate how to best support and maintain Staging Ref in the future, we encourage development teams using this environment to highlight their use cases in the following issue: https://gitlab.com/gitlab-com/gl-infra/software-delivery/framework/software-delivery-framework-issue-tracker/-/issues/36.

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • idrozdov/gitlab-shell
  • mmj/gitlab-shell
2 results
Show changes
Commits on Source (1)
v3.0.0
- Pipe RPUSH command to Redis via stdin to avoid overrunning command-line
- Remove rm-tag command (Robert Schilling)
- Remove create-branch and rm-branch commands (Robert Schilling)
- Update PostReceive worker so it logs a unique JID in Sidekiq
Loading
Loading
Loading
Loading
@@ -2,6 +2,7 @@ require_relative 'gitlab_init'
require_relative 'gitlab_net'
require 'json'
require 'base64'
require 'open3'
require 'securerandom'
class GitlabPostReceive
Loading
Loading
@@ -74,11 +75,20 @@ class GitlabPostReceive
queue = "#{config.redis_namespace}:queue:post_receive"
msg = JSON.dump({ 'class' => 'PostReceive', 'args' => [@repo_path, @actor, changes], 'jid' => @jid })
if system(*config.redis_command, 'rpush', queue, msg,
err: '/dev/null', out: '/dev/null')
return true
else
puts "GitLab: An unexpected error occurred (redis-cli returned #{$?.exitstatus})."
begin
result = Open3.popen2(*config.redis_command, '--pipe') do |stdin, stdout, wait_thr|
stdin.write("RPUSH '#{queue}' '#{msg}'")
stdin.close
wait_thr.value
end
return true if result == 0
puts "GitLab: An unexpected error occurred (redis-cli returned #{result.to_i})."
return false
rescue => e
puts "GitLab: An unexpected error occurred running redis-cli"
return false
end
end
Loading
Loading
# coding: utf-8
require 'spec_helper'
require 'gitlab_post_receive'
Loading
Loading
@@ -21,7 +22,7 @@ describe GitlabPostReceive do
before do
GitlabConfig.any_instance.stub(redis_command: %w(env -i redis-cli))
allow(gitlab_post_receive).to receive(:system).and_return(true)
allow(Open3).to receive(:popen2).and_return(0)
end
it "prints the broadcast message" do
Loading
Loading
@@ -47,13 +48,15 @@ describe GitlabPostReceive do
end
it "pushes a Sidekiq job onto the queue" do
expect(gitlab_post_receive).to receive(:system).with(
stdin = double('stdin')
expect(stdin).to receive(:write).with(
%Q/RPUSH 'resque:gitlab:queue:post_receive' '{"class":"PostReceive","args":["#{repo_path}","#{actor}",#{base64_changes.inspect}],"jid":"#{gitlab_post_receive.jid}"}'/)
expect(stdin).to receive(:close)
expect(Open3).to receive(:popen2).with(
*[
*%w(env -i redis-cli rpush resque:gitlab:queue:post_receive),
%Q/{"class":"PostReceive","args":["#{repo_path}","#{actor}",#{base64_changes.inspect}],"jid":"#{gitlab_post_receive.jid}"}/,
{ err: "/dev/null", out: "/dev/null" }
]
).and_return(true)
*%w(env -i redis-cli --pipe)
]).and_yield(stdin, double('stdout'), double('wait_thr', value: 0)).and_return(0)
gitlab_post_receive.exec
end
Loading
Loading
@@ -72,7 +75,7 @@ describe GitlabPostReceive do
context "when the redis command fails" do
before do
allow(gitlab_post_receive).to receive(:system).and_return(false)
allow(Open3).to receive(:popen2).and_return(1)
allow($?).to receive(:exitstatus).and_return(nil)
end
Loading
Loading