You are browsing a read-only backup copy of Wikitech. The live site can be found at wikitech.wikimedia.org

Difference between revisions of "GitLab/Upgrade"

From Wikitech-static
Jump to navigation Jump to search
imported>Jelto
 
imported>Brennen Bearnes
(Stub gitlab-runner instructions.)
Line 25: Line 25:
Recommended upgrade cadence:
Recommended upgrade cadence:
* patch upgrades: ASAP
* patch upgrades: ASAP
* minor upgrades (issued monthly): every 3 months
* minor upgrades (issued monthly): as needed for upstream features and bugfixes, every 3 months at minimum
* major upgrades (issued annually): once per year, when needed
* major upgrades (issued annually): once per year, after release has had time to be tested by early adopters and receive fixes


==== Prerequisites ====
==== Prerequisites ====


*Make yourself familiar with [https://docs.gitlab.com/ee/policy/maintenance.html GitLab release and maintenance policy]
* Make yourself familiar with [https://docs.gitlab.com/ee/policy/maintenance.html GitLab release and maintenance policy]
* Select exact GitLab version to upgrade to and find if it's a major, minor or patch upgrade
* Select exact GitLab version to upgrade to and find if it's a major, minor or patch upgrade
* Read release notes of all versions between current and selected one
* Read release notes of all versions between current and selected one
* Determine the proper upgrade path. Make sure an upgrade from the current to the new version is possible. Never upgrade over two major versions in a single step, that will (with great probability) lead to a broken installation
* Determine the proper upgrade path. Make sure an upgrade from the current to the new version is possible. Never upgrade over two major versions in a single step, that will (with great probability) lead to a broken installation
*Make sure the package with the new version is present in [https://debmonitor.wikimedia.org/packages/gitlab-ce debmonitor]
* Make sure the package with the new version is present in [https://debmonitor.wikimedia.org/packages/gitlab-ce debmonitor]
* Determine if any manual migrations are required in your upgrade; built-in PostgreSQL database server upgrade may be required between major versions
* Determine if any manual migrations are required in your upgrade; built-in PostgreSQL database server upgrade may be required between major versions
* make both full GitLab data and full configuration data backups before upgrading:
* make both full GitLab data and full configuration data backups before upgrading:
Line 52: Line 52:
*Check if any background migrations are running:
*Check if any background migrations are running:


  gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining
  gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'


==== Upgrading GitLab ====
==== Upgrading GitLab ====
Line 71: Line 71:
==== Upgrading GitLab without downtime ====
==== Upgrading GitLab without downtime ====
WIP: may be used in the future. See [https://docs.gitlab.com/omnibus/update/#zero-downtime-updates zero downtime upgrades].
WIP: may be used in the future. See [https://docs.gitlab.com/omnibus/update/#zero-downtime-updates zero downtime upgrades].
==== Upgrading GitLab shared runners ====
Shared runners are currently in the <code>gitlab-runners</code> project in WMCS.
First, pause each runner in the GitLab admin interface at https://gitlab.wikimedia.org/admin/runners
Next, on each machine:
<syntaxhighlight lang="bash">
sudo apt-get update
sudo apt-get install gitlab-runner
</syntaxhighlight>


==== Steps after upgrading ====
==== Steps after upgrading ====
Line 76: Line 89:
* Check that all background migrations are fully finished and background migration queue is empty
* Check that all background migrations are fully finished and background migration queue is empty
* Make sure that GitLab is up and running after upgrade; please give it several minutes to calm down
* Make sure that GitLab is up and running after upgrade; please give it several minutes to calm down
*Check [[GitLab/Monitoring|monitoring systems of GitLab]] (especially Icinga alerts)
* Check [[GitLab/Monitoring|monitoring systems of GitLab]] (especially Icinga alerts)
* Run basic smoke tests (make sure that web UI works, authentication works, ssh cloning works)
* Run basic smoke tests (make sure that web UI works, authentication works, ssh cloning works)
* re-enable paused runners (if required)
* Re-enable paused runners

Revision as of 21:19, 4 October 2021

WMF GitLab is installed via Debian package named gitlab-ce. This is called an Omnibus setup. So to upgrade GitLab, this package is upgraded to a newer version. The upgrade process is described here. For more detail, please see the GitLab upgrade documentation here and the Omnibus specific upgrade documentation here.

WMF upgrade path

The upgrade of GitLab should be applied in the following order:

  1. upgrade gitlab-ansible-test machine in WMCS/horizon, project gitlab-test
  2. upgrade GitLab replica (currently gitlab2001, please check)
  3. upgrade production GitLab (currently gitlab1001, please check)

Recommended upgrade cadence:

  • patch upgrades: ASAP
  • minor upgrades (issued monthly): as needed for upstream features and bugfixes, every 3 months at minimum
  • major upgrades (issued annually): once per year, after release has had time to be tested by early adopters and receive fixes

Prerequisites

  • Make yourself familiar with GitLab release and maintenance policy
  • Select exact GitLab version to upgrade to and find if it's a major, minor or patch upgrade
  • Read release notes of all versions between current and selected one
  • Determine the proper upgrade path. Make sure an upgrade from the current to the new version is possible. Never upgrade over two major versions in a single step, that will (with great probability) lead to a broken installation
  • Make sure the package with the new version is present in debmonitor
  • Determine if any manual migrations are required in your upgrade; built-in PostgreSQL database server upgrade may be required between major versions
  • make both full GitLab data and full configuration data backups before upgrading:
sudo /usr/bin/gitlab-backup create CRON=1 STRATEGY=copy GZIP_RSYNCABLE=yes SKIP=builds,artifacts,registry GITLAB_BACKUP_MAX_CONCURRENCY=4 GITLAB_BACKUP_MAX_STORAGE_CONCURRENCY=1
sudo /usr/bin/gitlab-ctl backup-etc
  • preload to-be-installed GitLab CE packages before upgrading:
sudo apt-get install gitlab-ce=14.0.10-ce.0 --download-only
  • if you have GitLab Runners connected to your GitLab Server, it is recommended to pause all runners and wait until all jobs are finished before starting the upgrade. TODO: Automate/script this step?
  • Check if any background migrations are running:
gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'

Upgrading GitLab

  • Downtime GitLab host in Icinga:
sudo cookbook sre.hosts.downtime -r "upgrade <gitlab_host> to new version https://phabricator.wikmiedia.org/<ID>" -H 1 <gitlab_host>
  • Run required manual configuration steps if needed (see release notes, not needed in most cases)
  • Install new GitLab version:
sudo apt-get install gitlab-ce=14.0.10-ce.0
  • Wait for GitLab to finish all migrations and restarts

Upgrading GitLab without downtime

WIP: may be used in the future. See zero downtime upgrades.

Upgrading GitLab shared runners

Shared runners are currently in the gitlab-runners project in WMCS.

First, pause each runner in the GitLab admin interface at https://gitlab.wikimedia.org/admin/runners

Next, on each machine:

sudo apt-get update
sudo apt-get install gitlab-runner

Steps after upgrading

  • Run required manual steps/migrations (see release notes. not needed in most cases)
  • Check that all background migrations are fully finished and background migration queue is empty
  • Make sure that GitLab is up and running after upgrade; please give it several minutes to calm down
  • Check monitoring systems of GitLab (especially Icinga alerts)
  • Run basic smoke tests (make sure that web UI works, authentication works, ssh cloning works)
  • Re-enable paused runners