GitLab継続的インテグレーションクイックスタート
GitLab CIクイックスタートガイドへようこそ。このガイドでは、GitLabでプロジェクトを設定し、コードで簡単なCI設定を作成するプロセスをご案内いたします。このガイドにより、GitLab CIでの開発を迅速に開始できるようになります。
このクイックスタートガイドでは、以下のタスクについて説明いたします:
- 新しいプロジェクトの作成
- 初回のCI/CD設定の作成とパイプラインの実行
- 実行結果へのアクセスと確認
- ジョブ実行を決定するルールベースの条件の導入
- 有益な設定をシームレスに統合するパイプラインテンプレートの活用
開始前の準備
GitLabアカウントをお持ちであることをご確認ください。アカウントをお持ちでない場合は、こちらからサインアップしてください。
プロジェクト内では、コードベース、CI設定、計画、分析、チームメンバーなど、さまざまなコンポーネントが管理されます。このガイドでは、readmeファイルのみを含む白紙の状態で新しいプロジェクトを作成いたします。
- トップバーの右側にあるプラスアイコンをクリックし、新しいプロジェクト/リポジトリを選択して新しいプロジェクトを作成します
- 空のプロジェクトを作成を選択します。
プロジェクト名
にmy-projectと入力します。 - プロジェクトを作成をクリックします。
- おめでとうございます!初回のプロジェクトが正常に作成されました。
GitLabでは、CI設定はYAML構文を使用してコードで定義されます。この設定では、ジョブの実行、ジョブの順序、ジョブの条件などに関するランナーマシンへの指示を指定します。CI設定を定義するには、リポジトリのルートに配置する**.gitlab-ci.yml**というファイルを作成する必要があります。このガイドでは、Web IDEを使用してこのファイルを作成・編集いたします。
Web IDEにアクセスするには、プロジェクト内にあるWeb IDEクイックボタンをクリックするだけです。Web IDE内で、左側のファイルエクスプローラーに移動します。ファイルエクスプローラー内で右クリックし、新しいファイルオプションを選択します。新しく作成したファイルに**.gitlab-ci.yml**という名前を付けます。
ジョブ実行の順序は、設定で定義されたステージによって決定されます。このガイドでは、build、test、packageの3つのステージをこの特定の順序で定義いたします。以下のコードを**.gitlab-ci.yml**ファイルにコピー&ペーストしてください:
stages:
- build
- test
- package
2つのテキストファイルを作成するタスクを想定してください。これらのファイルの連結に「Hello world.」という文字列が含まれることが最も重要です。パイプラインジョブを使用して、この要件を構築、テスト、パッケージ化することが目標です。
以下のタスクを実行するビルドジョブを指定いたします:「Hello,」という単語を含むテキストファイルの作成、「World」という単語を含む別のテキストファイルの作成、2つのファイルの結合内容を保存する3番目のファイルの生成。3番目のファイルをアーティファクトとして保存するため、testとpackageステージの後続ジョブがアクセスできるようになります。stagesブロックの下に以下のコードを挿入してください:
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
ビルドの整合性を検証するため、テストジョブを組み込みます。このジョブは、compiled.txtファイルに期待される「Hello world」という文字列が実際に含まれているかを確認します。ビルドジョブの下に以下のコードを挿入してください:
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
stages: # ジョブのステージリストと実行順序
- 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ジョブを編集し、「Hello World」という文字列を「hello world」(小文字)に変更します。
- コードの変更をコミットし、ステップ4と同様にパイプラインを確認します。
- パイプラインを検査すると、testジョブが失敗していることが確認できます。さらに、後続のpackageジョブは開始されず、期待通りにパイプライン自体が失敗しています。
ステップ5では、ジョブの失敗がパイプライン全体を失敗させることを確認しました。以下の手順で、ジョブの失敗がパイプライン全体の失敗を引き起こす条件を決定するロジックをパイプラインに導入できます:
- ジョブの失敗がパイプラインの失敗につながる条件を評価します。たとえば、mainまたはデフォルトブランチでジョブが失敗した場合はパイプラインの失敗を強制し、他のブランチでのジョブ失敗はパイプラインの継続を許可することができます。
- 失敗動作を制御するルールを定義します。$CI_COMMIT_BRANCHなどの変数を活用して現在のブランチを確認し、それに基づいて決定を行うことができます。
- 適切な条件を設定し、ジョブをallow_failure: falseまたはallow_failure: trueとしてマークするかを指定します。
- テストジョブにrules/if条件を追加します。
- ブランチに基づいてtrueまたはfalseに設定されたallow_failureキーワードを使用します。
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を指定することで実行できます。
このガイドでは、Code-Qualityテンプレートを使用してコード品質スキャンを設定に追加いたします。
stagesブロックの下に以下のコードを追加して、コード品質テンプレートを**.gitlab-ci.yml**に含めます。
include:
- template: Jobs/Code-Quality.gitlab-ci.yml
この変更をコミット&プッシュします。
パイプラインにコード品質ジョブが追加されたことが確認できます。コード品質スキャナーは、このリポジトリにコミットされたすべてのコード変更を徹底的に分析し、注意と改善が必要なコード品質の問題を強調表示する貴重なフィードバックを提供します。この貴重な洞察により、コードベース全体の品質を向上させ、パフォーマンスを最適化できます。
以上です!これらの手順により、GitLab CIを開始し、プロジェクトのビルドとテストプロセスを自動化できるようになります。