#!/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