|
GitLab CI/CD は、継続的なソフトウェア開発のために GitLab に組み込まれたツールです。
継続的インテグレーションは、Gitリポジトリにホストされているアプリケーションコードベースに小さなコードチャンクをプッシュすることで機能します。コードがプッシュされるたびに、一連のスクリプトが実行され、コードの変更がビルド、テスト、検証された後、メインブランチにマージされます。 継続的デリバリーとデプロイメントは、本質的には CI のさらなるステップであり、アプリケーションがリポジトリのデフォルト ブランチにプッシュされるたびに、実稼働環境にデプロイできるようになります。 これらの方法により、開発サイクルにおけるバグやエラーの早期検出が可能になり、運用環境に展開されるすべてのコードがアプリケーション用に確立されたコード標準に準拠していることが保証されます。 GitLab CI/CDは、リポジトリのルートディレクトリにある`.gitlab-ci.yml`というファイルを使用して設定されます。このファイルに指定されたスクリプトは、GitLab Runnerによって実行されます。 GitLab CI/CD 入門 継続的ソフトウェア開発アプローチは、スクリプトの自動実行を基盤としており、アプリケーション開発中にエラーが発生する可能性を最小限に抑えます。新しいコードの開発からデプロイまで、人間の介入はほとんど、あるいは全く必要ありません。 小さな反復ごとにコードの変更を継続的に構築、テスト、展開することで、すでにバグや障害がある以前のバージョンに基づいて新しいコードを開発する可能性を減らします。
GitLab CI/CDの仕組み GitLab CI/CD を使用するには、GitLab でホストされているアプリケーション コードベースが必要であり、ルート ディレクトリの .gitlab-ci.yml ファイルでビルド、テスト、およびデプロイメント スクリプトを指定する必要があります。 このファイルでは、実行するスクリプトの定義、依存関係の定義、順番に実行するコマンドと並列実行するコマンドの選択、アプリケーションのデプロイ場所の定義、スクリプトを自動で実行するか手動で実行するかの指定を行うことができます。 プロセスを視覚化するために、構成ファイルに追加されたすべてのスクリプトが、コンピューターの端末で実行されるコマンドと同じであると仮定します。 `.gitlab-ci.yml` をリポジトリに追加すると、GitLab はファイルを検出し、GitLab Runner というツールを使用してスクリプトを実行します。このツールはターミナルと同様に機能します。 これらのスクリプトはジョブにグループ化され、それらが組み合わさってパイプラインを形成します。非常にシンプルな .gitlab-ci.yml ファイルは次のようになります。
`before_script` プロパティは、実行前にアプリケーションの依存関係をインストールし、`run-test` というジョブはシステムの現在の Ruby バージョンを出力します。これらを組み合わせることで、リポジトリの任意のブランチにプッシュが行われるたびにトリガーされるパイプラインが形成されます。 GitLab CI/CD は、設定したジョブを実行するだけでなく、ターミナルに表示されるのと同じように、実行中に何が起こったかを表示することもできます。 アプリケーション用の戦略を作成すると、GitLab は定義に従ってパイプラインを実行します。パイプラインのステータスも GitLab に表示されます。 最後に、何か問題が発生した場合、すべての変更は簡単にロールバックできます。 基本的なCI/CDワークフロー リモートリポジトリのブランチにコミットをプッシュすると、プロジェクト用に設定したCI/CDパイプラインがトリガーされます。GitLab CI/CDは、以下の方法でこれを実行します。
すべてのステップは GitLab UI を通じて視覚化されます。 基本的なCI/CDワークフローの深い理解 基本的なワークフローを詳しく見ていくと、次の図に示すように、DevOps ライフサイクルの各段階で GitLab で利用できる機能がわかります。 確認する:
パッケージ:
リリース:
GitLab CI/CD を使用すると、次のことも可能になります。
GitLab CI/CD クイックスタート .gitlab-ci.yml ファイルは、GitLab Runner に何をすべきかを指示します。シンプルなパイプラインは通常、ビルド、テスト、デプロイの 3 つのステージで構成されます。 パイプラインは、CI/CD > パイプライン ページにあります。 .gitlab-ci.yml ファイルを作成する .gitlab-ci.yml ファイルを設定することで、CI にプロジェクトに対して何を行うかを伝えます。このファイルはリポジトリのルートディレクトリにあります。 リポジトリがプッシュを受信すると、GitLab はすぐに .gitlab-ci.yml ファイルを探し、ファイルの内容に基づいてランナーでジョブを開始します。 以下は Ruby プロジェクト構成の例です。
上記の例では、rspecとrubocopという2つのジョブが定義されています。各ジョブの実行を開始する前に、before_scriptで指定されたコマンドをまず実行する必要があります。 .gitlab-ci.yml を GitLab にプッシュする
ランナーを設定する GitLab では、ランナーが .gitlab-ci.yml で定義したジョブを実行します。 ランナーは、仮想マシン、物理マシン、Docker コンテナ、またはコンテナ クラスターになります。 GitLab は API 経由でランナーと通信するため、必要なのはランナーが配置されているマシンがインターネットにアクセスでき、GitLab サーバーにアクセスできることです。 設定 ➔ CI/CD に移動して、プロジェクトにランナーがすでに関連付けられているかどうかを確認できます。ランナーの設定は簡単です。 パイプラインとジョブのステータスを確認します。 ランナーを正常に構成すると、最新のコミットのステータスを確認できるようになります。 すべてのジョブを表示するには、パイプライン➔ジョブ ページに移動します。 ジョブのステータスをクリックすると、ジョブの実行ログが表示されます。 確認してみましょう:
オートDevOps Auto DevOpsは、アプリケーションの検出、ビルド、テスト、デプロイ、監視を自動化できる、事前定義されたCI/CD構成を提供します。CI/CDのベストプラクティスとツールを活用することで、Auto DevOpsは成熟した最新のソフトウェア開発ライフサイクルのセットアップと実行を簡素化することを目指しています。 Auto DevOpsは、各プロジェクトが最小限の設定で検証から監視までのワークフロー全体を完了できるため、ソフトウェア開発プロセスの構築を大幅に簡素化します。コードをプッシュするだけで、GitLabが残りのすべてを処理します。これにより、新規プロジェクトの開始が容易になり、社内全体でアプリケーションのセットアップの一貫性が維持されます。 次の例は、Auto DevOps を使用して、GitLab.com でホストされているプロジェクトを Google Kubernetes Engine にデプロイする方法を示しています。 この例では、GitLab のネイティブ Kubernetes 統合を使用しているため、別の Kubernetes クラスターを手動で作成する必要はありません。 この例では、GitLab テンプレートから作成されたアプリケーションを作成してデプロイします。 GitLabテンプレートからプロジェクトを作成する Kubernetes クラスターを作成して GitLab プロジェクトに接続するには、Google Cloud Platform アカウントが必要です。 以下では、GitLab プロジェクト テンプレートを使用して新しいプロジェクトを作成します。 プロジェクトに名前を付け、公開されていることを確認します。 GitLab テンプレートから Kubernetes クラスターを作成する [Kubernetes クラスターの追加] ボタンをクリックするか、[操作] > [Kubernetes] に移動します。 Helm、Ingress、Prometheus をインストールします。 Auto DevOps を有効にする(オプション) Auto DevOps はデフォルトで有効になっています。 ナビゲーション バー: 設定 > CI/CD > Auto DevOps。 「Auto DevOps パイプラインをデフォルトにする」チェックボックスをオンにして選択します。 最後に、展開戦略を選択します。 上記の手順をすべて完了すると、新しいパイプラインが自動的に作成されます。パイプラインを表示するには、「CI/CD」>「パイプライン」に移動してください。 アプリケーションを展開する ここまででパイプが動いているのがわかると思いますが、正確には何を実行しているのでしょうか? パイプラインは4つのステージに分かれています。次の図に示すように、各ステージで実行されている操作の数を確認できます。 ビルド -> テスト -> デプロイ -> パフォーマンステスト アプリケーションは正常にデプロイされました。ブラウザで確認してみましょう。 まず、「操作」>「環境」に移動します。 「環境」では、デプロイされたアプリケーションの詳細情報を確認できます。右端に3つのボタンがありますので、一つずつ見ていきましょう。 最初のアイコンをクリックすると、本番環境にデプロイされたアプリケーションのURLが開きます。非常にシンプルなページですが、重要なのはちゃんと動作するということです! その横には小さな画像のアイコンがあり、ここで Prometheus は Kubernetes クラスターに関するデータと、アプリケーションがクラスターに与える影響 (メモリ/CPU 使用量、レイテンシなど) を収集します。 3 番目のアイコンは Web ターミナルで、アプリケーションが実行されているコンテナー内でターミナル セッションを開きます。 例 GitLab CI/CD を使用して Spring Boot アプリケーションをデプロイします。 例: .gitlab-ci.yml
|