こんにちは!エンジニアリングの世界へようこそ。
今日から君と一緒に、開発の現場を劇的に変える「GitLab CI/CD」の世界を冒険していこう。
「手動でテストして、サーバーにファイルをアップロードして……あ、ビルドし忘れた!」
そんなヒヤッとする経験、ないかな?あるいは、プルリクエストを送るたびに「ちゃんと動くかな」と祈るような気持ちになっていないかい?
これを完全に自動化するのが、CI/CD(継続的インテグレーション/継続的デリバリー)という魔法のような仕組みだ。そしてGitLabには、この魔法を動かすエンジンが最初から標準搭載されている。
この記事を読み終える頃には、君はもう手動デリバリーの呪縛から解放され、「コードを書くだけで、あとはGitLabが全部やってくれる」という極上の快適さを手に入れているはずだ。さあ、一緒に扉を開けよう!
—
1. 頭の中を整理しよう!CI/CDの全体像
まずは、「CI/CDってなんだっけ?」というモヤモヤをスッキリ解消しておこう。難しく考える必要はない。工場の「完全自動ライン」をイメージしてほしい。
[開発者] ──(git push)──> [ GitLab ]
│
▼ (自動検知)
[ CI/CD パイプライン ]
├── 1. ビルド (Build)
├── 2. テスト (Test)
└── 3. デプロイ (Deploy)
1. CI(Continuous Integration:継続的インテグレーション)
コードをGitLabにプッシュするたびに、「自動でビルドし、自動でテストを走らせる」こと。バグを含んだコードがメインの枝葉に混ざるのを、番犬のように防いでくれる。
2. CD(Continuous Delivery / Deployment:継続的デリバリー/デプロイ)
テストをクリアした健全なコードを、「自動でステージング環境や本番環境に届ける(デプロイする)」こと。
GitLabにおけるこの自動化の舞台裏を支える主役が、今回マスターする `.gitlab-ci.yml` というたった1つの設定ファイルなんだ。
—
2. GitLab CI/CDの心臓部:`.gitlab-ci.yml` の基本構文
GitLabプロジェクトのルートディレクトリ(一番上の階層)に `.gitlab-ci.yml` というファイルを置くだけで、GitLabはその中身を読み取り、自動化のエンジンを回転させ始める。
まずは、その基本構造を構成する3つの重要キーワードを押さえよう。
- `stages`(ステージの定義)
パイプラインが流れていく「大まかな工程」の順番を決める。例えば、「ビルド → テスト → デプロイ」といった流れだ。
- `jobs`(ジョブの定義)
各ステージの中で実際に「何を実行するか」の具体的な作業単位。名前は自由に付けられる(例:`build_code`, `run_tests`)。
- `script`(スクリプト)
ジョブの中で実行する具体的なコマンド(Linuxのシェルコマンド)。「ここでコンパイルして!」「ここでテストコマンド叩いて!」と指示を出す場所だ。
—
3. 実践!「Hello World」ビルドジョブを作ってみよう
百聞は一見にしかず。実際に動く最小限の `.gitlab-ci.yml` を書いてみよう。
今回は、コードがプッシュされたら「お疲れ様です!ビルドを開始します!」と画面に出力する、極めてシンプルな「Hello World」ジョブを作ってみるよ。
プロジェクトのルートに `.gitlab-ci.yml` を作成し、以下のコードを貼り付けてみてほしい。
==========================================
GitLab CI/CD サンプル設定ファイル
==========================================
1. パイプライン全体の「工程(ステージ)」を定義する
左から右へ、この順番で処理が流れていきます。
stages:
- build
- test
2. 【Buildステージ】のジョブ定義
ステージ名を ‘build’ に指定します
compile_job:
stage: build
script:
- echo “==========================================”
- echo ” Step 1: プロジェクトのビルドを開始します…”
- echo ” フォルダ構成を確認中…”
- ls -la
- echo ” ビルドが正常に完了しました!”
- echo “==========================================”
3. 【Testステージ】のジョブ定義
ステージ名を ‘test’ に指定します
unit_test_job:
stage: test
script:
- echo “==========================================”
- echo ” Step 2: 自動テストを実行しています…”
- echo ” 全てのテストケースが合格しました 🎉”
- echo “==========================================”
この設定のポイント
- `stages` で `build` と `test` を定義しているため、まず `compile_job` が走り、それが成功すると自動的に次の `unit_test_job` が実行される。
- `script` の中身は、君が普段ターミナル(黒い画面)で打っているLinuxコマンド(`echo` や `ls`)そのまま。だから、特別な新しい言語を覚える必要はないんだ。
—
4. 魔法の瞬間:GitLabでパイプラインを動かしてみよう
ファイルを書いたら、あとはGitLabに教えるだけだ。
1. 作成した `.gitlab-ci.yml` をGitLabのリポジトリにコミット&プッシュする。
git add .gitlab-ci.yml
git commit -m “Add .gitlab-ci.yml for CI/CD pipeline”
git push origin main
2. ブラウザでGitLabのプロジェクトページを開く。
3. 左側メニューの [Build] > [Pipelines] をクリックしてみよう。
どうだいつ?
今まさに、君がプッシュしたコードを検知して、GitLabのランナー(実行環境)がクルクルと動き出し、ジョブを次々にクリアしていく様子が視覚的に確認できるはずだ。
緑色の「Passed」の文字が表示されたら大成功!
君はたった今、自分だけの自動化パイプラインを構築したんだ。
—
先輩からのアドバイス:これをマスターすれば毎日の作業が劇的に楽になりますよ
最初は「設定ファイルを書くの面倒だな」と感じるかもしれない。でも、考えてみてほしい。
これまで手動でやっていたビルド確認やテストの実行を、GitLabが変わりに24時間365日、文句も言わずにやってくれるんだ。
これをマスターすれば、「あれ、動かない?」と本番公開直前に冷や汗をかく夜とはおさらばできる。コードをプッシュしてコーヒーを一口飲んでいる間に、GitLabが「問題なしです!」と太鼓判を押してくれる安心感は、一度味わうと病みつきになるよ。
まずは今回紹介したシンプルな `.gitlab-ci.yml` を自分の環境で動かしてみてほしい。
そこから少しずつ、`script` の中に実際のビルドコマンドやテストツール(JestやPyTestなど)を組み込んでいけばいい。
一歩ずつ、確実にエンジニアとしての武器を増やしていこう。応援しているよ!