この動画では、GitLab CIについて簡潔にご紹介しています。初心者をはじめ、GitLab CIについての理解を深めたい方に最適です。
クイックスタート:GitLabの継続的インテグレーション
GitLab CIクイックスタートガイドへようこそ。このガイドでは、GitLabでプロジェクトをセットアップし、シンプルなCI設定を作成するプロセスを順を追ってご説明いたします。このガイドを活用すれば、GitLab CIの導入を円滑に進められます。
本クイックスタートガイドでは、以下の作業について解説いたします。
- - 新規プロジェクトを作成する。
- - 最初のCI/CD設定を作成し、パイプラインを実行する。
- - パイプラインの実行結果を確認し、レビューする。
- - ジョブの実行を制御するルールを導入する。
- - パイプラインテンプレートを活用し、便利な設定をシームレスに統合する。
継続的インテグレーションの導入にあたって
プロジェクト内では、コードベース、CI設定、プランニング、分析、チームメンバーなどのさまざまな要素が管理されます。本ガイドでは、Readmeファイルのみを含む、空のプロジェクトを新規作成します。
- トップバーの右側にあるプラス(+)アイコンをクリックし、新規プロジェクト/リポジトリを選択します。
- 空白のプロジェクトを作成を選択し、「プロジェクト名」 にマイプロジェクトと入力します。
- プロジェクトを作成をクリックします。
- おめでとうございます!最初のプロジェクトを作成できました。
設定ファイルを作成する
パイプラインのステージを定義する
stages: - build - test - package
パイプラインジョブを定義する
Buildジョブを定義する
build-job: stage: build script: - echo "Hello " | tr -d "\n" > file1.txt - echo "world" > file2.txt - cat file1.txt file2.txt > compiled.txt artifacts: paths: - compiled.txt
Testジョブを定義する
test: stage: test script: cat compiled.txt | grep -q 'Hello world '
Packageジョブを定義する
package: stage: package script: cat compiled.txt | gzip > packaged.gz artifacts: paths: - packaged.gz
パイプライン全体の設定は以下のようになります。
stages: # List of stages for jobs, and their order of execution - build - test - package build-job: stage: build script: - echo "Hello " | tr -d "\n" > file1.txt - echo "world" > file2.txt - cat file1.txt file2.txt > compiled.txt artifacts: paths: - compiled.txt test: stage: test script: cat compiled.txt | grep -q 'Hello world' package: stage: package script: cat compiled.txt | gzip > packaged.gz artifacts: paths: - packaged.gz
サンプルプロジェクトの設定ファイルはこちらです。
おめでとうございます!これで最初のCIパイプラインが完成しました。
プロジェクトで継続的インテグレーション(CI)を有効にするには、.gitlab-ci.ymlファイルをリポジトリにプッシュする必要があります。このファイルがリポジトリのルートに配置されると、プロジェクトへの各コミット時に自動的にCIパイプラインが実行されるようになります。最初のパイプラインは、このファイルをサーバーにプッシュした直後に開始されます。
- ファイルエクスプローラーの左側にあるマージアイコンをクリックします。
- 「CI設定を追加」などのコミットメッセージを入力します。
- コミット&プッシュをクリックします。
- 「新しいブランチにコミットしますか?」と表示されたら、「いいえ、現在のブランチmainを使用します」を選択します。
- プロジェクトに戻るには、左下にある「プロジェクトに移動」ボタンをクリックします。
おめでとうございます!これで、コードをコミットするたびにCIパイプラインが自動的に実行されるようになりました。
パイプラインが実行中の間、CI/CDタブでその状態を確認できます。この機能を使うと、ジョブの進行状況を簡単に追跡でき、開始済み、成功、失敗などの実行状態や、ジョブスクリプトによって生成された出力も確認できます。
- GitLabプロジェクトに移動し、左側のメニューを確認します。
- メニュー内のCI/CDをクリックし、続いてパイプラインをクリックします。
- パイプラインページで、状態列にあるパイプラインボタンを探し、それをクリックしてパイプライングラフを開きます。
- このグラフで、パイプライン内のジョブとそれぞれの状態を確認できます。
- 特定のジョブを詳しく調べるには、そのジョブをクリックしてジョブコンソールを開きます。このコンソールでは、ランナーマシン上で実行されたすべてのステップが表示されます。
- Packageジョブのコンソールを開くと、ランナーによって処理されたステップを確認できます。
- また、Packageジョブではアーティファクトが生成されるため、右側にあるダウンロードボタンをクリックして取得できます。
- これらの手順を実行することで、パイプラインの状態を追跡し、ジョブの詳細を確認し、実行中に生成されたアーティファクトやパッケージを取得することができます。
これで、最初のパイプラインを正しく実行し、成功させることができました!結果も確認でき、ジョブのアーティファクトもダウンロードできました。
Testジョブの期待値を変更すると、Testジョブが失敗し、それに伴いパイプライン全体も失敗します。
- Testジョブを編集し、フレーズ 「Hello World」を「hello world」(小文字)に変更します。
- コードの変更をコミットし、ステップ4と同様にパイプラインを確認します。
- パイプラインを確認すると、Testジョブが失敗 していることがわかります。さらに、その後のPackageジョブは開始されず、パイプライン全体も予想どおり失敗しています。
ステップ5では、ジョブが失敗すると、パイプライン全体も失敗することがわかりました。ただし、以下の手順でパイプラインにロジックを組み込むことで、ジョブの失敗時にパイプラインが失敗するかどうかを制御できます。
- まず、ジョブの失敗がパイプライン全体の失敗となる条件を検討します。たとえば、mainブランチやデフォルトブランチでジョブが失敗した場合はパイプラインも失敗させ、ほかのブランチではジョブが失敗してもパイプラインを継続させるというルールを適用できます。
- 次に、失敗時の動作を指定するルールを定義します。$CI_COMMIT_BRANCHなどの変数を利用し、現在のブランチを判定して動作を変更できます。
- 最後に、適切な条件を設定し、ジョブの失敗を許容するかどうかをallow_failure: falseまたはallow_failure: trueで指定します。
手順
- Testジョブにルール/if条件を追加します。
- ブランチに応じてallow_failureキーワードをtrueまたはfalseに設定します。
test: stage: test script: cat compiled.txt | grep -q 'Hello world' rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH allow_failure: false - if: $CI_COMMIT_BRANCH allow_failure: true
GitLabにビルトインされているパイプラインテンプレートを活用すれば、パイプライン設定を効率的に進められます。これらのテンプレートには、セキュリティスキャンやAWSデプロイ などの一般的なユースケースに対応した事前定義済みの設定が含まれています。
ビルトインのパイプラインテンプレートを活用するには、以下の手順に従います。
- GitLabが作成した、ビルド、テスト、デプロイなどのさまざまなシナリオに対応したパイプラインテンプレートを確認します。テンプレートはこちらで確認できます。
- 要件に合ったテンプレートを選択します。
- .gitlab-ci.ymlファイル内でテンプレートを参照し、パイプライン設定に組み込みます。通常、includeキーワードを使用し、テンプレートファイルのパスまたはURLを指定することでテンプレートをインポートできます。
このガイドでは、コード品質テンプレートを使用して設定にコード品質スキャンを追加します。
- .gitlab-ci.ymlにコード品質テンプレートを追加するには、以下のコードをStagesブロックの下に追加します。
include: - template: Jobs/Code-Quality.gitlab-ci.yml #
すると、コード品質ジョブがパイプラインに追加されているのが確認できます。コード品質スキャナーは、リポジトリにコミットされたコードの変更を詳細に分析し、コード品質に関するフィードバックを提供します。注意や改善が必要な問題点が明確に示されているため、コードの品質向上やパフォーマンスの最適化に役立てることができます。
以上で完了です!これらの手順で、GitLab CIを導入し、プロジェクトのBuildプロセスとTestプロセスを自動化することができます。