チュートリアル: 初めてのGitLab CI/CDパイプラインを作成して実行する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このチュートリアルでは、GitLabで初めてのCI/CDパイプラインを設定し、実行する方法を説明します。
すでにCI/CDの基本的な概念を理解している場合は、チュートリアル: 複雑なパイプラインを作成する:で一般的なキーワードについて確認できます。
前提要件
始める前に、以下を確認してください:
- CI/CDを使用するプロジェクトがGitLabにある。
- プロジェクトのメンテナーまたはオーナーのロールを持っている。
プロジェクトがない場合は、https://gitlab.comで公開プロジェクトを無料で作成できます。
ステップ
初めてのパイプラインを作成して実行するには:
ジョブを実行するためのRunnerが利用可能であることを確認します。
GitLab.comを使用している場合は、この手順を省略できます。GitLab.comでは、インスタンスRunnerが提供されています。
リポジトリのルートに
.gitlab-ci.ymlファイルを作成します。このファイルでCI/CDジョブを定義します。
このファイルをリポジトリにコミットすると、Runnerがジョブを実行します。ジョブの結果はパイプラインに表示されます。
Runnerが利用可能であることを確認する
GitLabでは、RunnerはCI/CDジョブを実行するエージェントです。
GitLab.comを使用している場合は、この手順を省略できます。GitLab.comでは、インスタンスRunnerが提供されています。
利用可能なRunnerを確認するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
- 設定 > CI/CDを選択します。
- Runnersを展開します。
アクティブなRunner(横に緑色の丸印が表示されているもの)が1つ以上あれば、ジョブを処理できるRunnerが利用可能です。
これらの設定にアクセスできない場合は、GitLab管理者に連絡してください。
Runnerがない場合
Runnerがない場合:
- ローカルマシンにGitLab Runnerをインストールします。
- プロジェクトにRunnerを登録します。
shellexecutorを選択します。
後の手順でCI/CDジョブを実行すると、ジョブはローカルマシン上で実行されます。
.gitlab-ci.ymlファイルを作成する
次に、.gitlab-ci.ymlファイルを作成します。これは、GitLab CI/CDに対する指示を指定するYAMLファイルです。
このファイルでは、以下を定義します:
- Runnerが実行するジョブの構造と順序。
- 特定の条件が発生した場合にRunnerが下すべき決定。
プロジェクトで.gitlab-ci.ymlファイルを作成するには:
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
コード > リポジトリを選択します。
ファイルリストの上部で、コミット先のブランチを選択します。不明な場合は、
masterまたはmainのままにします。次に、プラスアイコン( )を選択し、新しいファイルを選択します:ファイル名に
.gitlab-ci.ymlと入力し、大きい方のウィンドウに次のサンプルコードを貼り付けます:build-job: stage: build script: - echo "Hello, $GITLAB_USER_LOGIN!" test-job1: stage: test script: - echo "This job tests something" test-job2: stage: test script: - echo "This job tests something, but takes more time than test-job1." - echo "After the echo commands complete, it runs the sleep command for 20 seconds" - echo "which simulates a test that runs 20 seconds longer than test-job1" - sleep 20 deploy-prod: stage: deploy script: - echo "This job deploys something from the $CI_COMMIT_BRANCH branch." environment: productionこの例は、
build-job、test-job1、test-job2、deploy-prodの4つのジョブを示しています。echoコマンドに記載されているコメントは、ジョブを表示する際にUI上に表示されます。定義済み変数$GITLAB_USER_LOGINと$CI_COMMIT_BRANCHの値は、ジョブの実行時に入力されます。変更をコミットするを選択します。
パイプラインが起動し、.gitlab-ci.ymlファイルで定義したジョブが実行されます。
パイプラインとジョブのステータスを表示する
パイプラインとその中のジョブを確認してみましょう。
ビルド > パイプラインに移動します。3つのステージで構成されるパイプラインが表示されるはずです:
パイプラインIDを選択すると、パイプラインを視覚的に確認できます:
ジョブ名を選択すると、ジョブの詳細を確認できます。たとえば、
deploy-prodを選択します:
GitLabで初めてのCI/CDパイプラインを作成できました。おつかれさまでした。
これで、.gitlab-ci.ymlをカスタマイズして、より高度なジョブを定義できます。
.gitlab-ci.ymlの活用ヒント
.gitlab-ci.ymlファイルを使いこなすためのヒントを以下に示します。
.gitlab-ci.ymlの完全な構文については、CI/CD YAML構文リファレンスを参照してください。
- パイプラインエディタを使用して、
.gitlab-ci.ymlファイルを編集できます。 - 各ジョブにはスクリプトセクションがあり、各ジョブはステージに属しています:
stageは、ジョブの順次実行を示します。Runnerが利用可能な場合、同じステージ内のジョブは並列実行されます。needsキーワードを使用してステージの順序に関係なくジョブを実行して、パイプラインのスピードと効率性を高めることができます。
- ジョブとステージの実行方法をカスタマイズする追加設定が可能です:
rulesキーワードを使用して、ジョブを実行するかスキップするかの条件を指定できます。onlyおよびexceptのレガシーキーワードは引き続きサポートされていますが、同じジョブでrulesと併用することはできません。- パイプラインのジョブとステージ間で情報を永続的に保持するには、
cacheとartifactsを使用します。各ジョブに一時的なRunnerを使用する場合でも、これらのキーワードを使用して依存関係とジョブの出力を保存できます。 defaultキーワードを使用して、すべてのジョブに適用される追加設定を指定できます。このキーワードは、すべてのジョブで実行されるbefore_scriptセクションとafter_scriptセクションを定義する際によく使用されます。
関連トピック
移行元:
動画:
- First time GitLab & CI/CD(初めてのGitLab & CI/CD): GitLabの簡単な概要、CI/CDの最初のステップ、Goプロジェクトのビルド、テストの実行、CI/CDパイプラインエディタの使用、シークレットやセキュリティの脆弱性の検出、非同期練習用の演習が含まれています。
- Intro to GitLab CI(GitLab CI入門): このワークショップでは、Web IDEを使用してCI/CDによるソースコードのビルドと単体テストの実行を迅速に開始する方法を説明します。



