チュートリアル最初の GitLab CI/CD パイプラインの作成と実行

このチュートリアルでは、GitLabで最初のCI/CDパイプラインを設定して実行する方法を紹介します。

すでに CI/CD の基本的な概念に慣れている場合は、チュートリアルで共通のキーワードについて学ぶことができます:複雑なパイプラインの作成

前提条件

作業を開始する前に、以下を確認してください:

  • CI/CDを使いたいGitLabのプロジェクト。
  • プロジェクトのメンテナーまたはオーナーロール。

プロジェクトを持っていない場合は、https://gitlab.comで無料で公開プロジェクトを作成できます。

ステップ

最初のパイプラインを作成し、実行します:

  1. ジョブを実行できるRunnerがあることを確認します。

    GitLab.comを使っている場合は、このステップは飛ばしても構いません。GitLab.comが共有ランナーを提供してくれます。

  2. リポジトリのルートに.gitlab-ci.yml ファイル を作成します。このファイルで CI/CD ジョブを定義します。

このファイルをリポジトリにコミットすると、Runnerがジョブを実行します。ジョブの結果はパイプラインに表示されます。

ランナーが利用可能であることを確認します。

GitLab では、Runner は CI/CD ジョブを実行するエージェントです。

利用可能なランナーを見るには

  • Settings > CI/CDに移動し、Runnerを展開します。

少なくとも1つのアクティビティがあり、その横に緑色の丸が表示されていれば、ジョブを処理するためのランナーが利用可能です。

ランナーがいない場合

ランナーがいなければ

  1. GitLab Runnerをローカルマシンにインストールしてください。
  2. プロジェクト用のRunner を登録します。shell の Executor を選択します。

CI/CDジョブが実行されると、後のステップで、ローカルマシン上で実行されます。

.gitlab-ci.yml ファイルを作成します。

.gitlab-ci.yml ファイルを作成します。これは、GitLab CI/CDの指示を指定するYAMLファイルです。

このファイルでは

  • ランナーが実行するジョブの構造と順序。
  • 特定の条件が発生した場合にランナーが行うべき決定。

.gitlab-ci.yml

  1. 左サイドバーで、コード > リポジトリを選択します。
  2. ファイルリストの上で、コミットするブランチを選択します。よくわからない場合は、master またはmain のままにしておいてください。次に、プラスアイコン({plus})と新規ファイルを選択します:

    New file

  3. ファイル名には .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
    

    この例では4つのジョブを示しています:build-job test-job1,test-job2,deploy-prod.echo コマンドにリストされたコメントは、ジョブを表示する際に UI に表示されます。定義済み変数 $GITLAB_USER_LOGIN$CI_COMMIT_BRANCH の値は、ジョブの実行時に入力されます。

  4. 変更をコミット を選択します。

パイプラインが起動し、.gitlab-ci.yml ファイルで定義したジョブが実行されます。

パイプラインとジョブのステータスの表示

パイプラインとその中のジョブを見てみましょう。

  1. Build > Pipelinesに進みます。3つのステージを持つパイプラインが表示されているはずです:

    Three stages

  2. パイプラインIDを選択して、パイプラインを視覚的に表示します:

    Pipeline graph

  3. ジョブ名を選択して、ジョブの詳細を表示します。例えば、deploy-prod

    Job details

GitLabで最初のCI/CDパイプラインの作成に成功しました。おめでとうございます!

さっそく.gitlab-ci.yml をカスタマイズして、より高度なジョブを定義してみましょう。

.gitlab-ci.yml ヒント

.gitlab-ci.yml ファイルを使い始めるためのヒントをいくつか紹介します。

完全な.gitlab-ci.yml 構文については、完全な.gitlab-ci.yml キーワードリファレンス を参照してください。

  • パイプラインエディターを使って .gitlab-ci.yml ファイルを編集してください。
  • 各ジョブはスクリプトセクションを含み、ステージに属します:
    • stage はジョブの逐次実行を記述します。Runnerが利用可能な場合、1つのステージのジョブは並行して実行されます。
    • ジョブをステージ順から外れて実行するには、needs キーワード を使用します。これにより、有効非巡回グラフ](../directed_acyclic_graph/index.md)が作成されます。
  • ジョブやステージの実行方法をカスタマイズするために、追加の設定を行うことができます:
    • ジョブを実行またはスキップするタイミングを指定するには、rules キーワードを使用してください。only およびexcept レガシーキーワードはまだサポートされていますが、同じジョブ内でrules と一緒に使用することはできません。
    • cacheartifactsを使用して、パイプライン内でジョブやステージ間の情報を永続的に保持します。これらのキーワードは、各ジョブにエフェメラルランナーを使用する場合でも、依存関係とジョブ出力を保存する方法です。
    • すべてのジョブに適用される追加設定を指定するには、default キーワードを使用します。このキーワードは、すべてのジョブで実行されるbefore_script およびafter_script セクションを定義するためによく使用されます。