GitLabを使用してジョブを同時実行する方法(パート1)

ギットラボについて話しましょう。

ウェブベースのDevOpsプラットフォームであるGitLabは、ソフトウェア開発、バージョン管理、継続的インテグレーション、配信(CI/CD)、そしてコミュニケーションのための包括的なツールセットを提供します。よく知られた分散型バージョン管理システムであるGitをベースにしており、集中型リポジトリ管理ソリューションを提供します。

GitLabを使って、チームはソフトウェア開発プロジェクトを効率的に管理し、変更を追跡し、コードに関してコミュニケーションを取ることができます。プロジェクト管理ツールや、コードリポジトリ、問題追跡、コードレビュー、継続的インテグレーション、デプロイメントなどの機能も提供しています。

GitLabの主要機能

  1. GitLabのバージョン管理システムは、Gitを基盤にしており、開発者が変更を効率的に追跡し、ブランチを作成し、マージを管理できるようにします。
  2. GitLabは、プログラマーがコードベースを効果的に保存、整理、管理できる集中型リポジトリ管理システムを提供します。
  3. 問題追跡: GitLabの組み込みの問題追跡システムを使用することで、チームは問題を作成し、追跡し、チームメンバーに割り当て、進捗を追跡できます。
  4. GitLabは強力なCI/CDパイプラインを提供し、ビルド、テスト、デプロイメントのプロセスを自動化します。これにより、チームはコードの変更を即座にマージし、自動テストを実行し、アプリケーションを展開できます。
  5. コードレビューやコメント、インライン会話などのコラボレーションツールにより、チームメンバーが協力し、コード変更への入力を提供するのが容易になります。
  6. GitLabは、マイルストーン、ボード、カンバン、アジャイルボードなどのプロジェクト管理ツールを備えており、チームがプロジェクトの進捗を計画および追跡することができます。
  7. セキュリティとアクセス制御:コードの整合性を保証し、潜在的なセキュリティ上の懸念に対処するため、GitLabはロールベースのアクセス制御、マージリクエストの承認、脆弱性管理などのセキュリティ機能を提供しています。

図1 GitLab CICD-パイプラインアーキテクチャ

GitLabは、無料のコミュニティエディションから機能とサポートオプションが豊富なプレミアムバージョンまで、さまざまなエディションがあります。GitLab.comを通じてクラウドベースのサービスとして、またはオンプレミスで自己ホストとして使用できます。

GitLab Continuous Integration and Continuous Delivery (CI/CD)

GitLab CI/CDは、WebベースのGitリポジトリ管理ツールであるGitLabによって提供される強力な継続的インテグレーションおよび継続的デリバリプラットフォームです。GitLab CI/CDを使用すると、パイプラインのセットを使用して、コードコミットからデプロイまでのソフトウェア開発ライフサイクルのすべてのステップを自動化できます。

GitLab CI/CDプロセスの概要は以下の通りです。

  • GitLabの設定:始める前に、GitLabリポジトリを設定して設定する必要があります。独自の自己ホスト型GitLabインスタンスを設定するか、クラウドホスト型を使用できます。
  • .gitlab-ci.yml: GitLab CI/CDの中枢は.gitlab-ci.ymlファイルに含まれています。このファイルは、CI/CDパイプラインを記述し、プロジェクトリポジトリのルートに配置されています。コードの作成、検査、リリース方法を定義するいくつかのステップ、タスク、および指示で構成されており、YAML言語で記述されています。
  • Pipelines: GitLab CI/CDでは、パイプラインはリポジトリの特定のブランチまたはタグに対して実行されるアクションを指定するステージとジョブのコレクションです。新しいコミットまたはマージリクエストが発生するたびにパイプラインが開始されることで、テストおよびデプロイプロセスを自動化できます。
  • Jobs and Stages: ステージはビルド、テスト、デプロイを含むパイプラインのステップを反映しています。各レベルで1つ以上のジョブ—個々の作業単位—を指定できます。ジョブは仮想マシン、コンテナ、Kubernetesポッドなどの別々のランナーで実行でき、同時にまたは順番に実行できます。
  • Runners: GitLab CI/CDは、パイプラインに記載されたタスクを実行するためにランナーを使用します。GitLabは、シェアドランナーと独自のインフラストラクチャで構築できるカスタムランナーの両方を提供します。GitLabランナーは新しいジョブを監視し、セキュアで隔離された環境でそれらを実行するため、ビルドとテストは常に実行されます。
  • Job Artifacts and Reports: GitLab CI/CDを使用すると、コードカバレッジ結果、テストレポート、ビルドされたバイナリなど、パイプライン内で生成されたアーティファクトを保存できます。これらのアーティファクトをダウンロードして、デプロイまたは追加調査に使用できます。
  • 統合とデプロイメント: GitLab CI/CD は、コードをさまざまな環境にデプロイするための多数の統合を提供します。これには、Kubernetes クラスターやAzure、AWS、Google Cloudなどのクラウドインフラストラクチャ、またはカスタムサーバーが含まれます。独自のデプロイメントスクリプトを作成するか、GitLab の定義済みデプロイメントテンプレートを使用するオプションがあります。
  • 監視とフィードバック: GitLab CI/CD は、GitLab ユーザーインターフェースを介してパイプラインの状態と開発に関する情報にアクセスできるようにします。ログを確認し、各ジョブの実行状況を追跡し、パイプラインの実行が成功または失敗したときに通知を受け取ることができます。

GitLab CI/CD は、キャッシング、環境変数、シークレット管理など、さまざまな機能を含んでいます。これにより、CI/CD ワークフローをカスタマイズして改善し、あなたの要件に合わせることができます。

全体として、GitLab CI/CD はソフトウェアの作成、テスト、デプロイメントのプロセスを合理化し、チームがより迅速かつ効率的に高品質のアプリケーションを作成できるようにします。

GitLab CI: 並列処理

開発者にとって、新しいコードをプッシュした後に長時間待たなければならないことはほとんど迷惑なことはありません。このマニュアルでは、ステップバイステップで並列処理がデプロイメント時間を大幅に短縮できる方法を示します。

A great approach to decrease deployment times and give your development and quality assurance teams faster feedback is to run your automated deployments in parallel as part of our Gitlab CICD pipeline. Running your deployment in parallel cuts down on wait times and makes it possible to send bug fixes and upgrades to production more quickly without sacrificing the number of tests you run.


2 GitLab ジョブの同時実行

GitLab CICDを使用して並列デプロイメント自動化を実行するのはかなり簡単ですが、いくつかのセットアップパラメータに注意する必要があります。このチュートリアルでは、並列実行の設定手順をすべて説明し、デプロイメントを迅速化する方法と、結果をSREチームに伝える方法を説明します。では、始めましょう!

3GitLab – リージョン別の並列デプロイメント

GitLab 並列デプロイメントワークフロー

実行時間を短縮するために、複数のデプロイメントジョブを同時に実行する必要があります。各デプロイメントジョブインスタンスでは、サイトの複数のセクションを作成したり、Webサーバーを統合したり、設定を更新したりするなどの特定の指示を実行する必要があります。

GitLabアプリケーションのビルドとデプロイに使用するパイプラインにはXXジョブ以上があります。これらのジョブはすべて同じではありません。一部は完了するまでに数秒しかかからない簡単な操作ですが、他は慎重に最適化される必要がある長いプロセスです。チームメンバーやより大きなコミュニティからの貢献者による変更は、これらのパイプラインのそれぞれによって表されます。更新が意図された動作であり、他の製品と統合されていることを確認するために、すべてのアプリケーション/プロジェクト貢献者はパイプラインが完了するまで待つ必要があります。チームの生産性を維持するために、パイプラインができるだけ早く完了するようにしたいと考えています。

そのため、パイプラインの長さを常にチェックしています。たとえば、前回のリリースでは、成功したパイプラインシリーズがおよそ53.8分で完了しました。

100から200程度のパイプラインを毎日実行している想定で、長時間実行されるジョブの実行方法を変更することでプロセスを最適化できるかどうかを調査したいと考えています。

図 4 GitLab – ジョブの逐次実行

この部分では、ジョブの逐次実行について探求しました。このシリーズの第二部では、ボトルネックとなるジョブを並列実行することでどのように解決したかを学びます。

Source:
https://dzone.com/articles/how-to-use-gitlab-for-simultaneous-execution-of-jo