どうもお久しぶりです、GMOアドマーケティング GMOSSP開発担当の@KazuakiMです。 GMOSSPでは最近、CircleCIからGitHub Actionsに移行した事から、その情報をお伝えできたらと思います。 GMOSSPでは配信をPHP、集計などをGo言語で実装している事から、 今回はPHPのGitHub Actionsの実装例となります。
そもそもGitHub Actionsとは?
継続的インテグレーション/継続的デリバリー(CI/CD)をGitHubが提供する環境内で実行できるサービスとなります。GitHub Actionsを使用すると、ワールドクラスのCI / CDですべてのソフトウェアワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テスト、デプロイでき、コードレビュー、ブランチ管理、問題のトリアージを希望どおりに機能させます。ベースイメージは下記を使わせて頂くことにしました。
https://github.co.jp/features/actions
非常にドキュメントが整理されているため、困る事なくすすめる事ができました。
複数のPHPバージョンを利用した例を紹介致します。
イメージはPHP8.0を含む
ubuntu-latest
を使用します。
1 2 3 4 5 6 7 8 9 10 |
jobs: run: runs-on: ubuntu-latest strategy: fail-fast: true matrix: php-versions: ['8.0', '8.1'] name: PHP ${{ matrix.php-versions }} # https://github.com/marketplace/actions/setup-php-action#github-hosted-runners |
インストールするための手順(pecl、composer)はほぼ不要になると思われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
jobs: run: steps: - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} tools: php-cs-fixer, phpmd, phpunit # extensions: 必要性に応じて - name: Checkout uses: actions/checkout@v3 # https://github.com/marketplace/actions/setup-php-action#user-content-heavy_plus_sign-php-extension-support # https://github.com/marketplace/actions/setup-php-action#wrench-tools-support |
1 2 3 4 5 6 7 |
jobs: run: steps: - name: PHP CS Fixer run: php-cs-fixer fix --dry-run -v - name: PHPUnit run: phpunit --colors=always |
1 2 3 4 5 6 7 8 9 10 11 |
on: pull_request: branches: - master paths: - 'php_src/**' push: branches: - master paths: - 'php_src/**' |
php_src
配下のみをテストするようにしました。
最終的な設定ファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
name: sample on: pull_request: branches: - master paths: - 'php_src/**' push: branches: - master paths: - 'php_src/**' jobs: run: runs-on: ubuntu-latest strategy: fail-fast: true matrix: php-versions: ['8.0', '8.1'] name: PHP ${{ matrix.php-versions }} steps: - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} tools: php-cs-fixer, phpmd, phpunit # extensions: 必要性に応じて - name: Checkout uses: actions/checkout@v3 - name: PHP CS Fixer run: php-cs-fixer fix --dry-run -v - name: PHPUnit run: phpunit --colors=always |
所感
CircleCIからの移行は非常に容易でした。使うイメージと実行内容に大きく左右されると思いますが、非常に軽量でスピーディな印象を受けました。