🦁

今更ながらGitHub ActionsでCIを学んでみた

に公開

意外とエンジニア歴は長いのですが、自分のレベルが未熟だなと思うことが多く、最近少しずつ勉強を始めました。
これまでは誰かがインフラ周り(Docker やデプロイ、サーバー構築)をやってくれる環境に甘えてきた部分があり、自分でも触れるようになりたいと思ったのがきっかけです。

今回はその第一歩として GitHub Actions を使った CI を設定してみます。

まずは公式ドキュメントを読む

自分もすぐ「これどうなんですかね?」と人に頼ってしまいがちですが、まずは公式ドキュメントに目を通すのが大事です。
日本語も用意されていて、量もそこまで多くないので読みやすいです。

GitHub Actions ドキュメント

チュートリアル用にリポジトリを準備

GitHub 上に空のリポジトリを作成し、ローカルにクローンします。

git clone git@github.com:ユーザー名/ci-tutorial-php.git
cd ci-tutorial-php

Composer でプロジェクトを初期化し、テストに必要な PHPUnit を導入します。

composer init
composer require --dev phpunit/phpunit

※ composer init はいくつか質問されますが、すべて空のまま Enter で進めればOK です。

サンプルコードとテストを用意

最小のソースとテストを配置します。

tests/SampleTest.php

<?php

use PHPUnit\Framework\TestCase;
use Tajimayuki\CiTutorialPhp\Hello;

final class SampleTest extends TestCase
{
    public function testGreet(): void
    {
        $h = new Hello();
        $this->assertSame('Hello, world', $h->greet('world'));
    }
}

ローカルで実行確認:

vendor/bin/phpunit tests

GitHub Actions の設定

続いて、CI の設定ファイルを置きます。
.github/workflows/ci.yml を作成し、以下の内容を記述。

name: CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      # ① リポジトリのソースコードをチェックアウト
      - uses: actions/checkout@v4

      # ② PHP をセットアップ
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'

      # ③ Composer で依存ライブラリをインストール
      - run: composer install --no-interaction --prefer-dist

      # ④ PHPUnit を実行(tests ディレクトリ配下を対象)
      - run: vendor/bin/phpunit tests

これで、push や PR が作成されると自動でテストが実行されます。

実際にやってみて

  • テストを1件でも通すだけで、CI が「自分の代わりにチェックしてくれる」体験ができる
  • 思ったより簡単に動くので、学習の入口として最適

最初は設定で戸惑いましたが、最小限のサンプルを作ってみることで動作を理解できました。
次のステップとしては、PHPStan や CS Fixer を CI に組み込み、コード品質チェックも自動化していこうと思います。

Discussion