Release 11.7.0-rc3
Preparation
-
Create preparation MRs for this version and add the links below: # In the release-tools project: bundle exec rake "patch_merge_request[11.7.0-rc3]"
-
Cherry-pick changes into preparation MRs following their instructions -
Ensure the CE preparation MR has been fully merged into the EE counterpart -
Merge the preparation branches -
For omnibus-gitlab
cherry-pick remaining merge requests directly into CE stable branch. Then, merge the CE Omnibus stable branch into EE. -
Check the following list of critical issues/MRs which are to be included in
11.7.0-rc3
. Ensure each has made both CE and EE:-
REFERENCE_TO_MR_TO_PICK
-
-
Ensure builds are green on Omnibus CE stable branch and Omnibus EE stable branch
Packaging
-
Sync stable branches for CE, EE, and Omnibus to dev
-
Check for any problematic migrations in EE, and paste the diff in a snippet: git diff -M --diff-filter=RA v<PREVIOUS_TAG>-ee..11-7-stable-ee -- db/migrate db/post_migrate ee/db/migrate ee/db/post_migrate
=>Migrations
diff --git a/db/migrate/20181212171634_create_error_tracking_settings.rb b/db/migrate/20181212171634_create_error_tracking_settings.rb new file mode 100644 index 00000000000..18c38bd2c47 --- /dev/null +++ b/db/migrate/20181212171634_create_error_tracking_settings.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class CreateErrorTrackingSettings < ActiveRecord::Migration[5.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + create_table :project_error_tracking_settings, id: :int, primary_key: :project_id, default: nil do |t| + t.boolean :enabled, null: false, default: true + t.string :api_url, null: false + t.string :encrypted_token + t.string :encrypted_token_iv + t.foreign_key :projects, column: :project_id, on_delete: :cascade + end + end +end diff --git a/ee/db/migrate/20181204031328_create_approval_rules.rb b/ee/db/migrate/20181204031328_create_approval_rules.rb new file mode 100644 index 00000000000..27df6a07736 --- /dev/null +++ b/ee/db/migrate/20181204031328_create_approval_rules.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class CreateApprovalRules < ActiveRecord::Migration[5.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + create_table :approval_project_rules, id: :bigserial do |t| + t.timestamps_with_timezone + t.references :project, index: true, foreign_key: { on_delete: :cascade }, null: false + t.integer :approvals_required, limit: 2, default: 0, null: false + t.string :name, null: false + end + + create_table :approval_merge_request_rules, id: :bigserial do |t| + t.timestamps_with_timezone + t.references :merge_request, index: false, foreign_key: { on_delete: :cascade }, null: false + t.integer :approvals_required, limit: 2, default: 0, null: false + t.boolean :code_owner, default: false, null: false + t.string :name, null: false + + t.index [:merge_request_id, :code_owner], name: 'index_approval_merge_request_rules_1' + end + end +end diff --git a/ee/db/migrate/20181204031329_create_approval_rules_approvals.rb b/ee/db/migrate/20181204031329_create_approval_rules_approvals.rb new file mode 100644 index 00000000000..ff18e58f278 --- /dev/null +++ b/ee/db/migrate/20181204031329_create_approval_rules_approvals.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class CreateApprovalRulesApprovals < ActiveRecord::Migration[5.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + create_table(:approval_merge_request_rules_approved_approvers, id: :bigserial) do |t| + t.references( + :approval_merge_request_rule, + type: :bigint, + null: false, + foreign_key: { on_delete: :cascade }, + index: false + ) + t.references( + :user, + type: :integer, + null: false, + foreign_key: { on_delete: :cascade }, + index: { name: 'index_approval_merge_request_rules_approved_approvers_2' } + ) + + t.index [:approval_merge_request_rule_id, :user_id], unique: true, name: 'index_approval_merge_request_rules_approved_approvers_1' + end + end +end diff --git a/ee/db/migrate/20181204031330_create_approval_rule_members.rb b/ee/db/migrate/20181204031330_create_approval_rule_members.rb new file mode 100644 index 00000000000..5ef159c7a63 --- /dev/null +++ b/ee/db/migrate/20181204031330_create_approval_rule_members.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class CreateApprovalRuleMembers < ActiveRecord::Migration[5.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + TABLES = [ + { table: 'approval_merge_request_rules_users', rule: 'approval_merge_request_rule', member: 'user', member_table: 'users' }, + { table: 'approval_merge_request_rules_groups', rule: 'approval_merge_request_rule', member: 'group', member_table: 'namespaces' }, + { table: 'approval_project_rules_users', rule: 'approval_project_rule', member: 'user', member_table: 'users' }, + { table: 'approval_project_rules_groups', rule: 'approval_project_rule', member: 'group', member_table: 'namespaces' } + ].freeze + + def up + TABLES.each do |params| + member_id = "#{params[:member]}_id" + rule_id = "#{params[:rule]}_id" + + create_table(params[:table], id: :bigserial) do |t| + t.references params[:rule], null: false, type: :bigint, index: false, foreign_key: { on_delete: :cascade } + t.references params[:member], null: false, type: :integer, index: { name: "index_#{params[:table]}_2" } + + # To accommodate Group being in the `namespaces` table + t.foreign_key params[:member_table], column: member_id, on_delete: :cascade + + t.index [rule_id, member_id], unique: true, name: "index_#{params[:table]}_1" + end + end + end + + def down + TABLES.each { |params| drop_table(params[:table]) } + end +end diff --git a/ee/db/migrate/20181204031331_create_approval_merge_request_rules_approval_project_rules.rb b/ee/db/migrate/20181204031331_create_approval_merge_request_rules_approval_project_rules.rb new file mode 100644 index 00000000000..2190fd65e13 --- /dev/null +++ b/ee/db/migrate/20181204031331_create_approval_merge_request_rules_approval_project_rules.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class CreateApprovalMergeRequestRulesApprovalProjectRules < ActiveRecord::Migration[5.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + create_table(:approval_merge_request_rule_sources, id: :bigserial) do |t| + t.references( + :approval_merge_request_rule, + type: :bigint, + null: false, + foreign_key: { on_delete: :cascade }, + index: { name: 'index_approval_merge_request_rule_sources_1', unique: true } + ) + t.references( + :approval_project_rule, + type: :bigint, + null: false, + foreign_key: { on_delete: :cascade }, + index: { name: 'index_approval_merge_request_rule_sources_2' } + ) + end + end +end
-
Tag the 11.7.0-rc3
version using thetag
command:# In Slack: /chatops run tag 11.7.0-rc3
-
Check progress of EE packages build and CE packages build - This might take a while (around 80 min).
- We only need the EE packages to finish to continue with next steps.
Deploy
Deploys to production require confirmation from a production team member
before proceeding. Use /chatops run oncall prod
in the #production
channel to find who's on call and ping someone. Deploys to staging or canary
can be done at will, just mention it in the #production
channel.
staging.gitlab.com
- Staging deploys via the takeoff pipeline happen automatically as soon as the
EE packages build
reaches the
gitlab_com:upload_deploy
stage of the pipeline.
QA
-
Create a "QA Task" issue using the ChatOps command: # In Slack, replacing LAST_DEPLOYED_VERSION with the appropriate value: /chatops run qa_issue vLAST_DEPLOYED_VERSION..v11.7.0-rc3
-
Wait for the QA Task deadline to pass
canary VMs on gitlab.com
-
Notify #production that you're about to deploy on canary -
On video call, deploy 11.7.0-rc3
to the canary VMs on gitlab.com# In Slack: /chatops run deploy 11.7.0-rc3.ee.0 --production --canary
-
Link to deployment job (even failed attempts) => https://ops.gitlab.net/gitlab-org/takeoff/pipelines/23665 -
Confirm that there are no errors on canary
gitlab.com (production)
-
Get confirmation from a production team member to deploy production. If someone besides the oncall confirms, @mention
the oncall so they are aware. -
Confirm there are no critical alerts on gitlab.com on the alerting dashboard -
On video call, deploy 11.7.0-rc3
to GitLab.com# In Slack: /chatops run deploy 11.7.0-rc3.ee.0 --production
-
Link to deployment job (even failed attempts) =>
Release
-
Publish the packages via ChatOps: # In Slack: /chatops run publish 11.7.0-rc3
-
Verify that packages appear on packages.gitlab.com
-
Post a tweet about the 11.7.0-rc3
release in the#releases
channel:!tweet "GitLab 11.7.0-rc3 is available: https://packages.gitlab.com/gitlab/unstable This is a release candidate, we'll release 11.7 on the 22nd of this month."