summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/gitaly-test-spawn3
-rw-r--r--scripts/prepare_build.sh1
-rwxr-xr-xscripts/trigger-build-docs2
-rwxr-xr-xscripts/trigger-build-omnibus111
4 files changed, 96 insertions, 21 deletions
diff --git a/scripts/gitaly-test-spawn b/scripts/gitaly-test-spawn
index dd603eec7f6..8e05eca8d7e 100755
--- a/scripts/gitaly-test-spawn
+++ b/scripts/gitaly-test-spawn
@@ -1,7 +1,8 @@
#!/usr/bin/env ruby
gitaly_dir = 'tmp/tests/gitaly'
+env = { 'HOME' => File.expand_path('tmp/tests') }
args = %W[#{gitaly_dir}/gitaly #{gitaly_dir}/config.toml]
# Print the PID of the spawned process
-puts spawn(*args, [:out, :err] => 'log/gitaly-test.log')
+puts spawn(env, *args, [:out, :err] => 'log/gitaly-test.log')
diff --git a/scripts/prepare_build.sh b/scripts/prepare_build.sh
index 36bcf087cd9..ea406aadf39 100644
--- a/scripts/prepare_build.sh
+++ b/scripts/prepare_build.sh
@@ -14,6 +14,7 @@ fi
retry gem install knapsack
cp config/gitlab.yml.example config/gitlab.yml
+sed -i 's/bin_path: \/usr\/bin\/git/bin_path: \/usr\/local\/bin\/git/' config/gitlab.yml
# Determine the database by looking at the job name.
# For example, we'll get pg if the job is `rspec-pg 19 20`
diff --git a/scripts/trigger-build-docs b/scripts/trigger-build-docs
index 89ad6a99467..a270823b857 100755
--- a/scripts/trigger-build-docs
+++ b/scripts/trigger-build-docs
@@ -27,7 +27,7 @@ def docs_branch
# Prefix the remote branch with 'preview-' in order to avoid
# name conflicts in the rare case the branch name already
# exists in the docs repo and truncate to max length.
- "preview-#{ENV["CI_COMMIT_REF_SLUG"]}"[0...max]
+ "#{slug}-#{ENV["CI_COMMIT_REF_SLUG"]}"[0...max]
end
#
diff --git a/scripts/trigger-build-omnibus b/scripts/trigger-build-omnibus
index dcda70d7ed8..3c5c22c9372 100755
--- a/scripts/trigger-build-omnibus
+++ b/scripts/trigger-build-omnibus
@@ -2,26 +2,99 @@
require 'net/http'
require 'json'
+require 'cgi'
-uri = URI('https://gitlab.com/api/v4/projects/20699/trigger/pipeline')
-params = {
- "ref" => ENV["OMNIBUS_BRANCH"] || "master",
- "token" => ENV["BUILD_TRIGGER_TOKEN"],
- "variables[GITLAB_VERSION]" => ENV["CI_COMMIT_SHA"],
- "variables[ALTERNATIVE_SOURCES]" => true,
- "variables[ee]" => ENV["EE_PACKAGE"] || "false"
-}
-
-Dir.glob("*_VERSION").each do |version_file|
- params["variables[#{version_file}]"] = File.read(version_file).strip
-end
+module Omnibus
+ PROJECT_PATH = 'gitlab-org/omnibus-gitlab'.freeze
+
+ class Trigger
+ TOKEN = ENV['BUILD_TRIGGER_TOKEN']
+
+ def initialize
+ @uri = URI("https://gitlab.com/api/v4/projects/#{CGI.escape(Omnibus::PROJECT_PATH)}/trigger/pipeline")
+ @params = env_params.merge(file_params).merge(token: TOKEN)
+ end
+
+ def invoke!
+ res = Net::HTTP.post_form(@uri, @params)
+ id = JSON.parse(res.body)['id']
+
+ if id
+ puts "Triggered https://gitlab.com/#{Omnibus::PROJECT_PATH}/pipelines/#{id}"
+ else
+ raise "Trigger failed! The response from the trigger is: #{res.body}"
+ end
+
+ Omnibus::Pipeline.new(id)
+ end
+
+ private
+
+ def ee?
+ File.exist?('CHANGELOG-EE.md')
+ end
+
+ def env_params
+ {
+ "ref" => ENV["OMNIBUS_BRANCH"] || "master",
+ "variables[GITLAB_VERSION]" => ENV["CI_COMMIT_SHA"],
+ "variables[ALTERNATIVE_SOURCES]" => true,
+ "variables[ee]" => ee? ? 'true' : 'false'
+ }
+ end
-res = Net::HTTP.post_form(uri, params)
-pipeline_id = JSON.parse(res.body)['id']
+ def file_params
+ Hash.new.tap do |params|
+ Dir.glob("*_VERSION").each do |version_file|
+ params["variables[#{version_file}]"] = File.read(version_file).strip
+ end
+ end
+ end
+ end
-unless pipeline_id.nil?
- puts "Triggered pipeline can be found at https://gitlab.com/gitlab-org/omnibus-gitlab/pipelines/#{pipeline_id}"
-else
- puts "Trigger failed. The response from trigger is: "
- puts res.body
+ class Pipeline
+ INTERVAL = 60 # seconds
+ MAX_DURATION = 3600 * 3 # 3 hours
+
+ def initialize(id)
+ @start = Time.now.to_i
+ @uri = URI("https://gitlab.com/api/v4/projects/#{CGI.escape(Omnibus::PROJECT_PATH)}/pipelines/#{id}")
+ end
+
+ def wait!
+ loop do
+ raise 'Pipeline timeout!' if timeout?
+
+ case status
+ when :pending, :running
+ puts "Waiting another #{INTERVAL} seconds ..."
+ sleep INTERVAL
+ when :success
+ puts "Omnibus pipeline succeeded!"
+ break
+ else
+ raise "Omnibus pipeline did not succeed!"
+ end
+
+ STDOUT.flush
+ end
+ end
+
+ def timeout?
+ Time.now.to_i > (@start + MAX_DURATION)
+ end
+
+ def status
+ req = Net::HTTP::Get.new(@uri)
+ req['PRIVATE-TOKEN'] = ENV['GITLAB_QA_ACCESS_TOKEN']
+
+ res = Net::HTTP.start(@uri.hostname, @uri.port, use_ssl: true) do |http|
+ http.request(req)
+ end
+
+ JSON.parse(res.body)['status'].to_s.to_sym
+ end
+ end
end
+
+Omnibus::Trigger.new.invoke!.wait!