81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
#!/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
 |