summaryrefslogtreecommitdiff
path: root/scripts/construct-release-environments-versions.rb
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/construct-release-environments-versions.rb')
-rwxr-xr-xscripts/construct-release-environments-versions.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/construct-release-environments-versions.rb b/scripts/construct-release-environments-versions.rb
new file mode 100755
index 00000000000..1af45923731
--- /dev/null
+++ b/scripts/construct-release-environments-versions.rb
@@ -0,0 +1,37 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require 'json'
+
+class ReleaseEnvironmentsModel
+ COMPONENTS = %w[gitaly registry kas mailroom pages gitlab shell].freeze
+
+ # Will generate a json object that has a key for every component and a value which is the environment combined with
+ # short sha
+ # Example:
+ # {
+ # "gitaly": "15-10-stable-c7c5131c",
+ # "registry": "15-10-stable-c7c5131c",
+ # "kas": "15-10-stable-c7c5131c",
+ # "mailroom": "15-10-stable-c7c5131c",
+ # "pages": "15-10-stable-c7c5131c",
+ # "gitlab": "15-10-stable-c7c5131c",
+ # "shell": "15-10-stable-c7c5131c"
+ # }
+ def generate_json(environment)
+ output_json = {}
+ COMPONENTS.each do |component|
+ output_json[component.to_s] = "#{environment}-#{ENV['CI_COMMIT_SHORT_SHA']}"
+ end
+ JSON.generate(output_json)
+ end
+end
+
+# Outputs in `dotenv` format the ENVIRONMENT and VERSIONS to pass to release environments e.g.
+# ENVIRONMENT=15-10-stable
+# VERSIONS={"gitaly":"15-10-stable-c7c5131c","registry":"15-10-stable-c7c5131c","kas":"15-10-stable-c7c5131c", ...
+if $PROGRAM_NAME == __FILE__
+ environment = ENV['CI_COMMIT_REF_SLUG'].sub("-ee", "")
+ puts "ENVIRONMENT=#{environment}"
+ puts "VERSIONS=#{ReleaseEnvironmentsModel.new.generate_json(environment)}"
+end