Distributionチームのインフラとメンテナンスーーdev.gitlab.org

dev.gitlab.orgのメンテナンスガイドライン。手動によるパッケージのアップグレード/ダウングレード、GitLab設定変更を含みます。

共通リンク

dev.gitlab.org

これはGitLab CEを実行している内部GitLabインスタンスです。このサーバー上のomnibus-gitlab パッケージは、運用を維持するために必要な設定が施されたストックパッケージです。 このノードでは通常のomnibus-gitlabコマンドを使用できます。

自動化タスク

  1. ナイトリービルド: 毎日UTC 1:30に、dev.gitlab.orgでナイトリービルドがトリガーされます。 cronのトリガー時刻は現在dev.gitlab.orgのスケジュールパイプラインページで定義されています。

  2. デプロイ: 毎日UTC 7:20に、ナイトリーCEパッケージがdev.gitlab.orgに自動的にデプロイされます。 インストールプロセス中のエラーはSentryに記録されます。 Slack通知は#dev-gitlabに届きます。cronタスクは現在 roleファイルで定義されています。

メンテナンスタスク

このサーバーのGitLabインスタンスを運用状態に保つのはDistributionチームの責任です。

前提条件:

  • ノードへのアクセス権

  • タスクが/etc/gitlab/gitlab.rbへの永続的な変更を必要とする場合は、 Chef repoへのアクセス権。 このリポジトリへのアクセス権がない場合は、 InfrastructureのIssueトラッカーでIssueを作成し、 access requestラベルを付けてください。

パッケージの手動アップグレード/ダウングレード

最新のデプロイに問題がある場合、修正が完了するまでインストールを前のナイトリーバージョンに 戻し、デプロイをロックする必要があります。これはdev.gitlab.orgを利用する他のユーザーのために 安定性を確保するために行われます。

  1. まず、ダウングレードするインストールバージョンの詳細と関連するIssueへのリンクを記載した team-tasksの[issue-tracker]にIssueを作成してください。Issueを自分にアサインしてください。

  2. 次に、パッケージをダウングレードする前に#announcements Slackチャンネルでアナウンスしてください:

    I will be manually downgrading package on dev.gitlab.org to <version> as latest nightly is not working as expected. <link to issue>
    
  3. アップグレード中にデータが変更されないよう、sidekiqとunicornを停止してください。

    sudo gitlab-ctl stop sidekiq
    sudo gitlab-ctl stop unicorn
    
  4. 前の動作していたバージョンのパッケージを見つけてダウングレードしてください:

    sudo apt-get install gitlab-ce=<インストールするバージョン>
    

    例えば、バージョンが10.4.0+rnightly.75436.44501791-0の場合、以下を実行します:

    sudo apt-get install gitlab-ce=10.4.0+rnightly.75436.44501791-0
    

    これにより自動的にreconfigureが実行され、必要な変更が適用されます。

  5. reconfigureが完了したら、すべてのサービスが稼働していることを確認してください。

    sudo gitlab-ctl status
    
  6. https://dev.gitlab.org/helpにアクセスして、正しいバージョンがデプロイされていることを確認してください。

  7. 自動アップグレードを防ぐためにパッケージのホールドを作成してください:

    sudo apt-mark hold gitlab-ce
    

    そしてホールドが設定されていることを確認してください。

    sudo apt-mark showhold
    
  8. #announcementsチャンネルに戻り、ダウングレードが完了したことを知らせるメッセージを残してください:

    Downgrade completed. The package has also been put on hold to prevent automatic upgrades. <link to issue>
    

Issueが解決したら、パッケージのホールドを解除して最新バージョンにアップグレードします。

  1. まず#announcementsチャンネルでアナウンスします。

    I will be removing the package hold and manually upgrading package on dev.gitlab.org to the latest nightly. <link to issue>
    
  2. 次に、パッケージのホールドを解除します:

    sudo apt-mark unhold gitlab-ce
    
  3. アップグレードを続けます:

    sudo apt-get update
    sudo apt-get install gitlab-ce
    
  4. アップグレードが完了したら、https://dev.gitlab.org/helpにアクセスして最新バージョンが インストールされていることを確認します。

  5. 最後に、#announcementsチャンネルにノートを残します。

    Upgrade completed. dev.gitlab.org now runs <version>.
    

GitLab設定の変更

何らかの理由で/etc/gitlab/gitlab.rbに変更を適用する必要がある場合、 その変更はdev-gitlab-org roleに導入する必要があります。

このリポジトリへのアクセス権がないが、ホットパッチや設定テストを行う必要がある場合は、 以下の手順を実行できます:

  1. このノードでchef-clientを停止します:

    sudo service chef-client stop
    
  2. インスタンスを再稼働させるために必要な変更を行います。gitlab.rbファイルの変更が必要な場合は、 手動で変更してreconfigureを実行します。

  3. Productionチームに連絡して、gitlab.rbの設定変更をChefサーバーにコミットするサポートを 依頼します。

  4. これが適用されたら、ノードでchef-clientを起動します:sudo service chef-client start

  5. 行ったすべての変更をIssueにメモしてください!パッケージに修正が入ったら、 このノードへの変更を元に戻す責任はあなたにあります。