チュートリアルプロジェクト・ランナーの作成、登録、実行

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

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

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

  • 共有:GitLabインスタンス内の全てのグループとプロジェクトで利用可能。
  • グループ:グループ内のすべてのプロジェクトとサブグループで利用できます。
  • プロジェクト:特定のプロジェクトに関連付けられます。通常、プロジェクト・ランナーは一度に1つのプロジェクトで使用されます。

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

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

前提条件

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

空白のプロジェクトを作る

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

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

  1. 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
  2. 空白プロジェクトの作成」を選択します。
  3. プロジェクトの詳細を入力します:
    • プロジェクト名フィールドにプロジェクト名を入力してください。名前は小文字または大文字 (a-zA-Z)、数字 (0-9)、絵文字、アンダースコア (_)で始まる必要があります。また、ドット(.)、プラス(+)、ダッシュ(-)、スペースを含めることもできます。
    • Project slugフィールドには、プロジェクトのパスを入力します。GitLabインスタンスはスラッグをプロジェクトへのURLパスとして使用します。スラッグを変更するには、まずプロジェクト名を入力し、次にスラッグを変更します。
  4. Create projectを選択します。

プロジェクトパイプラインの作成

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

このファイルでは

  • ランナーが実行するジョブの構造と順序。
  • 特定の条件が発生した場合にランナーが行うべき決定。
  1. 左側のサイドバーで、「検索」を選択するか、または「移動」を選択して、プロジェクトまたはグループを見つけます。
  2. プロジェクトの概要を選択します。
  3. プラスアイコン({プラス})を選択し、新規ファイルを選択します。
  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つです。

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

プロジェクトランナーを作成し、登録します。

次に、プロジェクト Runner を作成して登録します。ランナーを登録して GitLab とリンクさせ、プロジェクトパイプラインからジョブを拾えるようにする必要があります。

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

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Settings > CI/CDを選択します。
  3. Runnerセクションを展開します。
  4. New project runner(新規プロジェクトランナー)を選択します。
  5. オペレーションシステムを選択します。
  6. タグ]セクションで、[タグなしで実行] チェックボックスを選択します。タグは、Runnerが実行できるジョブを指定するもので、オプションです。
  7. ランナーの作成]を選択します。
  8. 画面の指示に従って、コマンドラインからランナーを登録します。プロンプトが表示されたら
    • ランナーはホスト・コンピュータ上で直接実行されるため、executor には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. ランナーを開始します:

    gitlab-runner run
    

ランナー設定ファイルの確認

ランナーを登録すると、設定とランナー認証トークンがconfig.toml に保存されます。Runner は、ジョブキューからジョブをピックアップするときに GitLab と認証するためにトークンを使用します。

config.toml を使用して、より高度なランナー設定を定義することができます。

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. Build > Pipelinesを選択します。
  3. パイプラインの実行を選択します。
  4. ジョブを選択してジョブログを表示します。出力はこの例のようになり、Runnerがジョブを正常に実行していることがわかります:

       Running with gitlab-runner 16.2.0 (782e15da)
       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
       
    

これで、最初のランナーの作成、登録、実行に成功しました!