GitLab RunnerでCI/CDを始めよう|初心者向け導入ガイド
こんにちは、とまだです。
コードをプッシュするたびに手動でテストを実行するのって、面倒ですよね。
特に複数人で開発していると、誰かがテストを忘れてバグが本番環境に流れてしまう…なんてこともあります。
今回は、そんな悩みを解決するGitLab Runnerについて解説します。
GitLab Runnerとは?
GitLab Runnerは、コードの変更を検知して自動でテストやビルドを実行してくれるツールです。
例えるなら、24時間働いてくれる優秀なアシスタントのようなものです。
コードがプッシュされると即座に反応し、指定された作業を黙々とこなしてくれます。
CI/CDとの関係
CI/CDという言葉を聞いたことがあるでしょうか。
継続的インテグレーション(CI)と継続的デリバリー(CD)の略称です。
簡単に言うと、開発作業を自動化して効率を上げる仕組みのことです。
GitLab Runnerは、このCI/CDを実現するための実行エンジンとして機能します。
具体的には、.gitlab-ci.yml
というファイルに書かれた指示を読み取り、その通りに作業を進めます。
なぜGitLab Runnerが必要なのか
手動作業の限界
開発現場では、以下のような作業が頻繁に発生します。
- コードのテスト実行
- アプリケーションのビルド
- 成果物のデプロイ
- コード品質のチェック
これらを毎回手動で行うと、時間がかかるだけでなくミスも起きやすくなります。
自動化がもたらす効果
GitLab Runnerを導入すると、これらの作業が自動化されます。
結果として、開発者は本来の開発作業に集中できるようになります。
また、全員が同じ環境でテストを実行するため、「私の環境では動くのに…」という問題も減らせます。
GitLab Runnerの基本的な仕組み
GitLab Runnerの動作は、レストランの注文システムに似ています。
お客さん(開発者)が注文(コードをプッシュ)すると、厨房(Runner)が料理(テストやビルド)を作ります。
そして完成した料理(結果)をお客さんに提供する、という流れです。
ジョブの実行フロー
Runnerは以下の流れで動作します。
- GitLabサーバーに新しいジョブがないか定期的に確認
- ジョブを見つけたら、内容を読み取って実行
- 実行結果をGitLabサーバーに報告
- 次のジョブを待機
このサイクルを繰り返すことで、継続的な自動化を実現しています。
実際の導入手順
それでは、実際にGitLab Runnerを導入してみましょう。
ここではLinux環境を例に説明します。
インストール方法
以下のコマンドでGitLab Runnerをインストールできます。
# リポジトリの追加
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
# インストール実行
sudo apt-get update
sudo apt-get install gitlab-runner
このコマンドを実行すると、最新版のGitLab Runnerがインストールされます。
インストールが完了したら、次はGitLabとの連携設定です。
GitLabへの登録
Runnerを使うには、GitLabに登録する必要があります。
# 登録コマンドの実行
sudo gitlab-runner register
このコマンドを実行すると、対話形式で設定を行えます。
GitLabのURLと登録トークンを入力すれば、基本的な連携は完了です。
設定のポイント
登録時にタグを設定しておくと、後々の管理が楽になります。
例えば、以下のように用途別にタグを付けます。
docker
: Docker環境で実行nodejs
: Node.js専用production
: 本番環境用
このようにタグを活用することで、適切なRunnerでジョブを実行できます。
実践的な使用例
ここでは、Node.jsプロジェクトでの活用例を見てみましょう。
基本的な設定ファイル
.gitlab-ci.yml
ファイルに以下のように記述します。
stages:
- test
- build
test-job:
stage: test
script:
- npm install
- npm test
tags:
- nodejs
build-job:
stage: build
script:
- npm run build
tags:
- nodejs
この設定により、コードがプッシュされるたびにテストとビルドが自動実行されます。
各ステージが順番に実行され、エラーがあれば即座に通知されます。
実行結果の確認
GitLabのパイプライン画面で、各ジョブの実行状況を確認できます。
緑色なら成功、赤色なら失敗と一目で分かるため、問題の早期発見につながります。
また、エラーログも詳細に表示されるので、デバッグも効率的に行えます。
よくある問題と解決方法
ジョブが実行されない場合
「Pending」状態のままジョブが進まないことがあります。
この場合は以下を確認してください。
まず、Runnerが正しく登録されているか確認します。
次に、タグの設定が.gitlab-ci.yml
と一致しているかチェックします。
最後に、Runnerのステータスが「active」になっているか確認しましょう。
環境差によるエラー
ローカルでは動くのに、Runner上では失敗することがあります。
原因として多いのは以下の点です。
依存ライブラリのバージョン違いは特に注意が必要です。
package-lock.json
などのロックファイルを使って、バージョンを固定しましょう。
また、環境変数の設定漏れもよくある原因です。
必要な環境変数は.gitlab-ci.yml
に明記するか、GitLabの設定画面で登録しましょう。
効率的な運用のコツ
キャッシュの活用
毎回npm install
を実行すると時間がかかります。
キャッシュ機能を使えば、依存関係のダウンロード時間を短縮できます。
cache:
paths:
- node_modules/
この設定を追加するだけで、実行時間が大幅に短縮されます。
ジョブの並列実行
テストとコード品質チェックなど、独立した処理は並列実行できます。
同じステージ内に複数のジョブを定義すれば、自動的に並列処理されます。
これにより、全体の実行時間を短縮できます。
まとめ
GitLab Runnerを使えば、面倒な手動作業から解放されます。
最初は設定に戸惑うかもしれませんが、一度動き出せば開発効率は格段に向上します。
小さなプロジェクトでも導入する価値は十分にあります。
まずは簡単なテストの自動化から始めて、徐々に活用範囲を広げていくのがおすすめです。
今回紹介した基本的な使い方をマスターすれば、より高度な自動化にも挑戦できるようになります。
ぜひ実際に手を動かして、CI/CDの便利さを体感してみてください。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →