From 0bc78d08000ae1d5ee0943c8991d6d3fee7977e3 Mon Sep 17 00:00:00 2001 From: DJ Mountney Date: Thu, 17 May 2018 14:10:37 -0700 Subject: 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. --- scripts/trigger-build-cloud-native | 61 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 scripts/trigger-build-cloud-native (limited to 'scripts') 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 -- cgit v1.2.3