チュートリアル: プロジェクトRunnerを自分で作成、登録、実行する
このチュートリアルでは、GitLabで初めてのRunnerを設定して実行する方法について説明します。
Runnerは、GitLab CI/CDパイプラインでジョブを実行するGitLab Runnerアプリケーション内のエージェントです。ジョブは.gitlab-ci.ymlファイルで定義し、利用可能なRunnerに割り当てます。
GitLabには、次の3種類のRunnerがあります:
- 共有: GitLabインスタンス内のすべてのグループとプロジェクトで使用できます。
- グループ: グループ内のすべてのプロジェクトとサブグループで使用できます。
- プロジェクト: 特定のプロジェクトに関連付けます。通常、プロジェクトRunnerは、一度に1つのプロジェクトで使用します。
このチュートリアルでは、基本的なパイプライン設定で定義されたジョブを実行するプロジェクトRunnerを作成します:
はじめる前
Runnerを作成、登録、実行する前に、ローカルコンピューターにGitLab Runnerをインストールする必要があります。
空のプロジェクトを作成する
まず、CI/CDパイプラインとRunnerを作成できる空のプロジェクトを作成します。
空のプロジェクトを作成するには:
- 左側のサイドバーの上部で、新規作成( )を選択し、新規プロジェクト/リポジトリを選択します。新しいナビゲーションをオンにしている場合、このボタンは右上隅にあります。
- 空のプロジェクトの作成を選択します。
- プロジェクトの詳細を入力します:
- プロジェクト名フィールドに、プロジェクトの名前を入力します。名前は、小文字または大文字(
a-zA-Z)、数字(0-9)、絵文字、またはアンダースコア(_)で始まる必要があります。ドット(.)、プラス記号(+)、ダッシュ(-)、またはスペースも使用できます。 - プロジェクトslugフィールドに、プロジェクトへのパスを入力します。GitLabインスタンスは、このslugをプロジェクトへのURLパスとして使用します。slugを変更するには、最初にプロジェクト名を入力し、次にslugを変更します。
- プロジェクト名フィールドに、プロジェクトの名前を入力します。名前は、小文字または大文字(
- プロジェクトを作成を選択します。
プロジェクトパイプラインを作成する
次に、プロジェクトの.gitlab-ci.ymlファイルを作成します。これは、GitLab CI/CDに対する指示を指定するYAMLファイルです。
このファイルでは、以下を定義します:
- Runnerが実行するジョブの構造と順序。
- 特定の条件が発生した場合にRunnerが行う必要がある決定。
左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーに表示されます。
Project overview(プロジェクトの概要)を選択します。
プラスアイコン( )を選択し、新しいファイルを選択します。
ファイル名フィールドに、
.gitlab-ci.ymlと入力します。大きなテキストボックスに、次のサンプル設定を貼り付けます:
stages: - build - test job_build: stage: build script: - echo "Building the project" job_test: stage: test script: - echo "Running tests"この設定には、Runnerが実行する2つのジョブ(buildジョブとtestジョブ)があります。
変更をコミットするを選択します。
プロジェクトRunnerを作成して登録する
次に、プロジェクトRunnerを作成して登録します。Runnerを登録してGitLabにリンクし、プロジェクトパイプラインからジョブを取得できるようにする必要があります。
プロジェクトRunnerを作成するには:
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーに表示されます。
設定 > CI/CDを選択します。
Runnersセクションを展開します。
New project runner(新規プロジェクトRunner)を選択します。
オペレーティングシステムを選択します。
タグセクションで、Run untagged(タグ付けされていないチェックボックスを実行)をオンにします。タグには、Runnerが実行できるジョブを指定します(オプション)。
Runnerを作成を選択します。
画面の指示に従って、コマンドラインから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になります。
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がジョブを実行するのを確認できるようにします。
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーに表示されます。
ビルド > パイプラインを選択します。
新しいパイプラインを選択します。
ジョブログを表示するには、ジョブを選択します。出力は次の例のようになるはずです。これは、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を作成、登録、実行できました。