チュートリアルプロジェクト・ランナーの作成、登録、実行
このチュートリアルでは、GitLab で最初の Runner を設定して実行する方法を説明します。
Runnerとは、GitLabのCI/CDパイプラインでジョブを実行するGitLab Runnerアプリケーションのエージェントです。ジョブは.gitlab-ci.yml
ファイルで定義され、利用可能な Runner に割り当てられます。
GitLabには3種類のRunnerがあります:
- 共有:GitLabインスタンス内の全てのグループとプロジェクトで利用可能。
- グループ:グループ内のすべてのプロジェクトとサブグループで利用できます。
- プロジェクト:特定のプロジェクトに関連付けられます。通常、プロジェクト・ランナーは一度に1つのプロジェクトで使用されます。
このチュートリアルでは、基本的なパイプライン設定で定義されたジョブを実行するプロジェクトランナーを作成します:
前提条件
Runnerを作成、登録、実行する前に、GitLab Runnerがローカルコンピューターにインストールされている必要があります。
空白のプロジェクトを作る
まず、CI/CDパイプラインとRunnerを作成するための空白のプロジェクトを作成します。
空白のプロジェクトを作成するには:
- 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
- 空白プロジェクトの作成」を選択します。
- プロジェクトの詳細を入力します:
-
プロジェクト名フィールドにプロジェクト名を入力してください。名前は小文字または大文字 (
a-zA-Z
)、数字 (0-9
)、絵文字、アンダースコア (_
)で始まる必要があります。また、ドット(.
)、プラス(+
)、ダッシュ(-
)、スペースを含めることもできます。 - Project slugフィールドには、プロジェクトのパスを入力します。GitLabインスタンスはスラッグをプロジェクトへのURLパスとして使用します。スラッグを変更するには、まずプロジェクト名を入力し、次にスラッグを変更します。
-
プロジェクト名フィールドにプロジェクト名を入力してください。名前は小文字または大文字 (
- Create projectを選択します。
プロジェクトパイプラインの作成
次に、プロジェクト用の.gitlab-ci.yml
ファイルを作成します。これは、GitLab CI/CDの指示を指定するYAMLファイルです。
このファイルでは
- ランナーが実行するジョブの構造と順序。
- 特定の条件が発生した場合にランナーが行うべき決定。
- 左側のサイドバーで、「検索」を選択するか、または「移動」を選択して、プロジェクトまたはグループを見つけます。
- プロジェクトの概要を選択します。
- プラスアイコン({プラス})を選択し、新規ファイルを選択します。
-
ファイル名]フィールドに「
.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つです。
- 変更をコミット を選択します。
プロジェクトランナーを作成し、登録します。
次に、プロジェクト Runner を作成して登録します。ランナーを登録して GitLab とリンクさせ、プロジェクトパイプラインからジョブを拾えるようにする必要があります。
プロジェクト Runner を作成するには:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Settings > CI/CDを選択します。
- Runnerセクションを展開します。
- New project runner(新規プロジェクトランナー)を選択します。
- オペレーションシステムを選択します。
- タグ]セクションで、[タグなしで実行] チェックボックスを選択します。タグは、Runnerが実行できるジョブを指定するもので、オプションです。
- ランナーの作成]を選択します。
- 画面の指示に従って、コマンドラインからランナーを登録します。プロンプトが表示されたら
- ランナーはホスト・コンピュータ上で直接実行されるため、
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
となります。
- ランナーはホスト・コンピュータ上で直接実行されるため、
-
ランナーを開始します:
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がジョブを実行するのを確認できるようにします。
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Build > Pipelinesを選択します。
- パイプラインの実行を選択します。
-
ジョブを選択してジョブログを表示します。出力はこの例のようになり、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
これで、最初のランナーの作成、登録、実行に成功しました!