summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorDJ Mountney <david@twkie.net>2018-05-17 14:10:37 -0700
committerDJ Mountney <david@twkie.net>2018-05-17 15:17:53 -0700
commit0bc78d08000ae1d5ee0943c8991d6d3fee7977e3 (patch)
tree9ab0b6a675379911f62ee1efda0f5e239adf353d /scripts
parent09a387b5e7ac5221be3073b68461526c3a0dcc4a (diff)
downloadgitlab-ce-0bc78d08000ae1d5ee0943c8991d6d3fee7977e3.tar.gz
Build cloud native images on tags
When on a tag, trigger a multi-project pipeline in the CNG repostiory. Opting for a trigger rather than an addition to our release-tools project for a few reasons: - The Dockerfiles in the CNG image repo change infrequently, and as a result I don't feel the need/overhead for stable branches in that repo at this time - My intent with the CNG repo, is that once stable, the Dockerfiles would actualy move to their component projects, to be versioned with the code they are building - It is likely that we will want to followup with a manually triggered package for branches for devs, and possibly review apps, so it made sense to build the CNG ci jobs to accept this sort of pipeline.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/trigger-build-cloud-native61
1 files changed, 61 insertions, 0 deletions
diff --git a/scripts/trigger-build-cloud-native b/scripts/trigger-build-cloud-native
new file mode 100755
index 00000000000..b6ca75a588d
--- /dev/null
+++ b/scripts/trigger-build-cloud-native
@@ -0,0 +1,61 @@
+#!/usr/bin/env ruby
+
+require 'gitlab'
+
+#
+# Configure credentials to be used with gitlab gem
+#
+Gitlab.configure do |config|
+ config.endpoint = 'https://gitlab.com/api/v4'
+end
+
+#
+# The remote project
+#
+GITLAB_CNG_REPO = 'gitlab-org/build/CNG'.freeze
+
+def ee?
+ ENV['CI_PROJECT_NAME'] == 'gitlab-ee' || File.exist?('CHANGELOG-EE.md')
+end
+
+def read_file_version(filename)
+ raw_version = File.read(filename).strip
+
+ # if the version matches semver format, treat it as a tag and prepend `v`
+ if raw_version =~ Regexp.compile(/^\d+\.\d+\.\d+(-rc\d+)?(-ee)?$/)
+ "v#{raw_version}"
+ else
+ raw_version
+ end
+end
+
+def params
+ params = {
+ 'GITLAB_SHELL_VERSION' => read_file_version('GITLAB_SHELL_VERSION'),
+ 'GITALY_VERSION' => read_file_version('GITALY_SERVER_VERSION'),
+ 'TRIGGERED_USER' => ENV['GITLAB_USER_NAME'],
+ 'TRIGGER_SOURCE' => "https://gitlab.com/gitlab-org/#{ENV['CI_PROJECT_NAME']}/-/jobs/#{ENV['CI_JOB_ID']}"
+ }
+
+ if ee?
+ params['EE_PIPELINE'] = 'true'
+ params['GITLAB_EE_VERSION'] = ENV['CI_COMMIT_REF_NAME']
+ else
+ params['CE_PIPELINE'] = 'true'
+ params['GITLAB_CE_VERSION'] = ENV['CI_COMMIT_REF_NAME']
+ end
+
+ params
+end
+
+#
+# Trigger a pipeline
+#
+def trigger_pipeline
+ # Create the cross project pipeline using CI_JOB_TOKEN
+ pipeline = Gitlab.run_trigger(GITLAB_CNG_REPO, ENV['CI_JOB_TOKEN'], 'master', params)
+
+ puts "Triggered https://gitlab.com/#{GITLAB_CNG_REPO}/pipelines/#{pipeline.id}"
+end
+
+trigger_pipeline