Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PHPで始めるGitHub Actions ゆるはち.it #27 吉⽥あひる (@strtyuu)
Slide 2
Slide 2 text
話すこと GitHub Actionsのいいところ QAツールの活⽤ よく使うアクションの紹介 ローカルでGitHub Actionsを実⾏する⽅法
Slide 3
Slide 3 text
話さないこと GitHub Actionsの使い⽅ 公式ドキュメントがわかりやすいので 他のCIとの⽐較 ⽐較できるほど詳しくないので
Slide 4
Slide 4 text
GitHub Actionsとは 2019年11⽉にGitHubがリリースしたソフトウェア開発ライフサイクル内のタスクを⾃動化す るツール。 任意のイベントをきっかけにタスクを実⾏することができ、commitがpushされた時などgit 周りのイベントだけでなく、issueやPRが作成/更新/削除された時やcronによるスケジューリ ングなど、様々なイベントに対してタスクを紐づけることができる。 主にCI/CDによく使われ、似たようなものとしてはCircleCIやTravis CIなどがある。
Slide 5
Slide 5 text
GitHub Actionsのいいところ 安い! ⼿軽! GitHub との連携が充実! 便利なActionも充実!
Slide 6
Slide 6 text
安い! 従量課⾦だけど無料枠があるので、個⼈使⽤であればだいたい無料枠におさまる。
Slide 7
Slide 7 text
⼿軽! .github/workflows ディレクトリにymlファイルを置くだけ! skeleton projectなどを予め⽤意しておけば、新しいリポジトリを作った直後にはCIの構築が 終わってるということもありえる
Slide 8
Slide 8 text
skeleton project? プロジェクトのよくあるセッティングを予めしておいたもの。 参考 https://github.com/koriym/Koriym.PhpSkeleton
Slide 9
Slide 9 text
(僕は最近こんな感じでPHPプロジェクトを作成していま すというデモ)
Slide 10
Slide 10 text
僕がよく使うアクションの紹介
Slide 11
Slide 11 text
shivammathur/setup-php マシン上にPHPの動作環境を構築をしてくれるやつ。 extensionやCIでしか使わないようなツールを簡単に⼊れることができてとても便利。 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 8.0 extensions: mbstring, mysql tools: cs2pr
Slide 12
Slide 12 text
dorny/paths-filter gitのdiffを正規表現ベースで簡単に取得できるアクション。 「差分のあったファイルにだけlintをかけたい」とか on.push.paths とかだと対応がちょっ と⾯倒な時に便利。
Slide 13
Slide 13 text
- uses: dorny/
[email protected]
id: changed with: list-files: shell filters: | php: # 正規表現が使える - '**/*.php' without_delete: # 新規作成/ 編集されたファイルのみみたいな指定もできる - added|modified: '*.php' - name: Run php-cs-fixer run: | vendor/bin/php-cs-fixer fix \ --dry-run \ ${{ steps.changed.outputs.without_delete_files }}
Slide 14
Slide 14 text
actions/cache 任意のファイル/ディレクトリをキャッシュして、ジョブ間で使い回しができるやつ。 CIを⾼速化したいときに役に⽴つ。 - name: Get Composer Cache Directory id: composer-cache-dir run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Restore composer cache id: composer-cache uses: actions/cache@v2 with: path: ${{ steps.composer-cache-dir.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }} restore-keys: | ${{ runner.os }}-composer-
Slide 15
Slide 15 text
styfle/cancel-workflow-action 同じPRで連続してpushしたときとかに既に⾛ってるジョブをキャンセルしてくれるやつ。 ⼀回のCIがとても⻑いなど、CIが終わるのを待つのが⾯倒なプロジェクトとかで便利。 - name: Cancel previous runs uses: styfle/
[email protected]
with: access_token: ${{ github.token }}
Slide 16
Slide 16 text
QAツールとProblem Matcher
Slide 17
Slide 17 text
Problem Matcher とは GitHub Actionsで特定 のフォーマットの⽂字 列を出⼒すると、発⽣ したエラーなどがこん な感じでみれるように なる奴
Slide 18
Slide 18 text
PHPUnit デファクトスタンダードなテスティングフレームワーク shivammathur/setup-php を使っている場合 - name: Setup problem matchers for PHPUnit run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Run PHPUnit tests run: vendor/bin/phpunit shivammathur/setup-php を使っていない場合は mheap/phpunit-matcher-action@v1 を使う - name: Configure phpunit-matcher uses: mheap/phpunit-matcher-action@v1 - name: Run PHPUnit tests run: vendor/bin/phpunit
Slide 19
Slide 19 text
PHPStan 0.12.32 以上の場合 何もしなくてもOK。明⽰的にやる場合は --error-format=github を⾜してあげる - name: Run phpstan run: vendor/bin/phpstan analyse --error-format=github 0.12.32 未満の場合 staabm/annotate-pull-request-from-checkstyle を使う - name: Run phpstan run: vendor/bin/phpstan analyse --error-format=checkstyle --no-progress | cs2pr
Slide 20
Slide 20 text
psalm 3.8.4 以上の場合 --output-format=github を⾜してあげる - name: Run psalm run: vendor/bin/psalm --output-format=github 3.8.4 未満の場合 staabm/annotate-pull-request-from-checkstyle を使う - name: Run psalm run: vendor/bin/psalm --output-format=checkstyle --no-progress | cs2pr
Slide 21
Slide 21 text
infection --logger-github を⾜してあげる - name: Run Infection run: vendor/bin/infection --logger-github
Slide 22
Slide 22 text
php-cs-fixer staabm/annotate-pull-request-from-checkstyle を使う - name: Run php-cs-fixer run: vendor/bin/php-cs-fixer fix --dry-run --format=checkstyle | cs2pr
Slide 23
Slide 23 text
(おまけ)ローカルでGitHub Actionを実⾏する⽅法
Slide 24
Slide 24 text
nektos/act を使う $ brew install act $ act pull_request
Slide 25
Slide 25 text
まとめ GitHub Actionsはいいぞ Actionという発明は偉⼤ QAツールを適切に設定してあげることでレビューの体験が向上するかも