🦁
今更ながらGitHub ActionsでCIを学んでみた
意外とエンジニア歴は長いのですが、自分のレベルが未熟だなと思うことが多く、最近少しずつ勉強を始めました。
これまでは誰かがインフラ周り(Docker やデプロイ、サーバー構築)をやってくれる環境に甘えてきた部分があり、自分でも触れるようになりたいと思ったのがきっかけです。
今回はその第一歩として GitHub Actions を使った CI を設定してみます。
まずは公式ドキュメントを読む
自分もすぐ「これどうなんですかね?」と人に頼ってしまいがちですが、まずは公式ドキュメントに目を通すのが大事です。
日本語も用意されていて、量もそこまで多くないので読みやすいです。
チュートリアル用にリポジトリを準備
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