正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

チュートリアル: プロジェクトRunnerを自分で作成、登録、実行する

このチュートリアルでは、GitLabで初めてのRunnerを設定して実行する方法について説明します。

Runnerは、GitLab CI/CDパイプラインでジョブを実行するGitLab Runnerアプリケーション内のエージェントです。ジョブは.gitlab-ci.ymlファイルで定義し、利用可能なRunnerに割り当てます。

GitLabには、次の3種類のRunnerがあります:

  • 共有: GitLabインスタンス内のすべてのグループとプロジェクトで使用できます。
  • グループ: グループ内のすべてのプロジェクトとサブグループで使用できます。
  • プロジェクト: 特定のプロジェクトに関連付けます。通常、プロジェクトRunnerは、一度に1つのプロジェクトで使用します。

このチュートリアルでは、基本的なパイプライン設定で定義されたジョブを実行するプロジェクトRunnerを作成します:

  1. 空のプロジェクトを作成する
  2. プロジェクトパイプラインを作成する
  3. プロジェクトRunnerを作成して登録する
  4. パイプラインをトリガーしてRunnerを実行する

はじめる前

Runnerを作成、登録、実行する前に、ローカルコンピューターにGitLab Runnerをインストールする必要があります。

空のプロジェクトを作成する

まず、CI/CDパイプラインとRunnerを作成できる空のプロジェクトを作成します。

空のプロジェクトを作成するには:

  1. 左側のサイドバーの上部で、新規作成 plus )を選択し、新規プロジェクト/リポジトリを選択します。新しいナビゲーションをオンにしている場合、このボタンは右上隅にあります。
  2. 空のプロジェクトの作成を選択します。
  3. プロジェクトの詳細を入力します:
    • プロジェクト名フィールドに、プロジェクトの名前を入力します。名前は、小文字または大文字(a-zA-Z)、数字(0-9)、絵文字、またはアンダースコア(_)で始まる必要があります。ドット(.)、プラス記号(+)、ダッシュ(-)、またはスペースも使用できます。
    • プロジェクトslugフィールドに、プロジェクトへのパスを入力します。GitLabインスタンスは、このslugをプロジェクトへのURLパスとして使用します。slugを変更するには、最初にプロジェクト名を入力し、次にslugを変更します。
  4. プロジェクトを作成を選択します。

プロジェクトパイプラインを作成する

次に、プロジェクトの.gitlab-ci.ymlファイルを作成します。これは、GitLab CI/CDに対する指示を指定するYAMLファイルです。

このファイルでは、以下を定義します:

  • Runnerが実行するジョブの構造と順序。
  • 特定の条件が発生した場合にRunnerが行う必要がある決定。
  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーに表示されます。

  2. Project overview(プロジェクトの概要)を選択します。

  3. プラスアイコン( plus )を選択し、新しいファイルを選択します。

  4. ファイル名フィールドに、.gitlab-ci.ymlと入力します。

  5. 大きなテキストボックスに、次のサンプル設定を貼り付けます:

    stages:
      - build
      - test
    
    job_build:
      stage: build
      script:
        - echo "Building the project"
    
    job_test:
      stage: test
      script:
        - echo "Running tests"

    この設定には、Runnerが実行する2つのジョブ(buildジョブとtestジョブ)があります。

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

プロジェクトRunnerを作成して登録する

次に、プロジェクトRunnerを作成して登録します。Runnerを登録してGitLabにリンクし、プロジェクトパイプラインからジョブを取得できるようにする必要があります。

プロジェクトRunnerを作成するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーに表示されます。

  2. 設定 > CI/CDを選択します。

  3. Runnersセクションを展開します。

  4. New project runner(新規プロジェクトRunner)を選択します。

  5. オペレーティングシステムを選択します。

  6. タグセクションで、Run untagged(タグ付けされていないチェックボックスを実行)をオンにします。タグには、Runnerが実行できるジョブを指定します(オプション)。

  7. Runnerを作成を選択します。

  8. 画面の指示に従って、コマンドラインからRunnerを登録します。プロンプトが表示されたら、次の手順を実行します:

    • executorの場合、Runnerはホストコンピューター上で直接実行されるため、shellと入力します。executorは、Runnerがジョブを実行する環境です。
    • GitLab instance URLの場合、GitLabインスタンスのURLを使用します。たとえば、gitlab.example.com/yourname/yourprojectでプロジェクトがホストされている場合、GitLabインスタンスのURLはhttps://gitlab.example.comになります。プロジェクトがGitLab.comでホスティングされている場合、URLはhttps://gitlab.comになります。
  9. Runnerを起動します:

    gitlab-runner run

Runnerの設定ファイルを確認する

Runnerを登録すると、設定とRunner認証トークンがconfig.tomlに保存されます。Runnerは、ジョブキューからジョブを取得するときにトークンを使用してGitLabと認証を行います。

config.tomlを使用すると、より高度なRunner設定を定義できます。

Runnerを登録して起動すると、config.tomlは次のようになるはずです:

[[runners]]
  name = "my-project-runner1"
  url = "http://127.0.0.1:3000"
  id = 38
  token = "glrt-TOKEN"
  token_obtained_at = 2023-07-05T08:56:33Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "shell"

パイプラインをトリガーしてRunnerを実行する

次に、プロジェクトでパイプラインをトリガーして、Runnerがジョブを実行するのを確認できるようにします。

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーに表示されます。

  2. ビルド > パイプラインを選択します。

  3. 新しいパイプラインを選択します。

  4. ジョブログを表示するには、ジョブを選択します。出力は次の例のようになるはずです。これは、Runnerがジョブを正常に実行したことを示しています:

       Running with gitlab-runner 18.0.0 (d7f2cea7)
       on my-project-runner TOKEN, system ID: SYSTEM ID
       Preparing the "shell" executor
       00:00
       Using Shell (bash) executor...
       Preparing environment
       00:00
       /Users/username/.bash_profile: line 9: setopt: command not found
       Running on MACHINE-NAME...
       Getting source from Git repository
       00:01
       /Users/username/.bash_profile: line 9: setopt: command not found
       Fetching changes with git depth set to 20...
       Reinitialized existing Git repository in /Users/username/project-repository
       Checking out 7226fc70 as detached HEAD (ref is main)...
       Skipping object checkout, Git LFS is not installed for this repository.
       Consider installing it with 'git lfs install'.
       Skipping Git submodules setup
       Executing "step_script" stage of the job script
       00:00
       /Users/username/.bash_profile: line 9: setopt: command not found
       $ echo "Building the project"
       Building the project
       Job succeeded

これで、初めてのRunnerを作成、登録、実行できました。