#!/usr/bin/env ruby require 'gitlab' # # Give the remote branch a different name than the current one # in order to avoid conflicts # @docs_branch = "#{ENV["CI_COMMIT_REF_SLUG"]}-built-from-ce-ee" GITLAB_DOCS_REPO = 'gitlab-com/gitlab-docs'.freeze # # Configure credentials to be used with gitlab gem # Gitlab.configure do |config| config.endpoint = 'https://gitlab.com/api/v4' config.private_token = ENV["DOCS_API_TOKEN"] # GitLab Docs bot access token which has only Developer access to gitlab-docs end # # Dummy way to find out in which repo we are, CE or EE # def ee? File.exist?('CHANGELOG-EE.md') end # # Create a remote branch in gitlab-docs # def create_remote_branch Gitlab.create_branch(GITLAB_DOCS_REPO, @docs_branch, 'master') puts "Remote branch '#{@docs_branch}' created" rescue Gitlab::Error::BadRequest puts "Remote branch '#{@docs_branch}' already exists" end # # Remove a remote branch in gitlab-docs # def remove_remote_branch Gitlab.delete_branch(GITLAB_DOCS_REPO, @docs_branch) puts "Remote branch '#{@docs_branch}' deleted" end # # Trigger a pipeline in gitlab-docs # def trigger_pipeline # Overriding vars in https://gitlab.com/gitlab-com/gitlab-docs/blob/master/.gitlab-ci.yml param_name = ee? ? 'BRANCH_EE' : 'BRANCH_CE' # The review app URL app_url = "http://#{@docs_branch}.#{ENV["DOCS_REVIEW_APPS_DOMAIN"]}/#{ee? ? 'ee' : 'ce'}" # Create the pipeline puts "=> Triggering a pipeline..." pipeline = Gitlab.run_trigger(GITLAB_DOCS_REPO, ENV["DOCS_TRIGGER_TOKEN"], @docs_branch, { param_name => ENV["CI_COMMIT_REF_NAME"] }) puts "=> Pipeline created:" puts "" puts "https://gitlab.com/gitlab-com/gitlab-docs/pipelines/#{pipeline.id}" puts "" puts "=> Preview your changes live at:" puts "" puts app_url puts "" end # # When the first argument is deploy then create the branch and trigger pipeline # When it is 'stop', it deleted the remote branch. That way, we ensure there # are no stale remote branches and the Review server doesn't fill. # case ARGV[0] when 'deploy' create_remote_branch trigger_pipeline when 'cleanup' remove_remote_branch end