(社内エンジニアからの寄稿です)
バージョン管理を Subversion から git (Github/GitLab) に移行してからおよそ半年が経過しました。
私が所属する部署で稼働しているプロジェクトは、概ね git 上で管理されていると思います。
ですが、現状活用できている機能は「プルリクエスト」くらいではないでしょうか。
もう一歩踏み込んで使えるようになりたいと思い、「GitHub Actions」を触ってみました。
GitHub Actionsで、ソフトウェア開発ワークフローをリポジトリの中で自動化し、カスタマイズし、実行しましょう。 CI/CDを含む好きなジョブを実行してくれるアクションを、見つけたり、作成したり、共有したり、完全にカスタマイズされたワークフロー中でアクションを組み合わせたりできます。
GitHub Actions のドキュメント - GitHub Docs
いくつかの処理を組み合わせたワークフローを、コミットのプッシュやプルリクエストの作成といったイベントをきっかけにして、自動的に動作させるということのようです。
ワークフローは、`.github/workflows/` 配下に `.yml` ファイルを配置することで作成できます。
※リポジトリメニューの [Actions] タブからも作成することもできます。
今回は以下のような内容でワークフローを作成しました。
※余談ですが、github のリポジトリ画面で [ . ]キー を押下すると GitHub Codespaces を開くことができます。
内容としては
① リポジトリからソースコードをチェックアウト
② "Hello, world!" とコンソールに出力
③ 異常終了(終了ステータス:1)
となっています。
「on: pull_request」を指定しているワークフローは、プルリクエストが作成される度に自動的に実行されます。
また、ブランチの保護設定にワークフローを紐づけることで、正常に終了しないとマージできないように制限することもできます。
上記のワークフローは常に異常終了するように設定されているので、これ紐づけることで常にプルリクエストが棄却されるようになります。
実際には、「php-cs-fixer」や「eslint」等の静的解析ツールを組み込むことで、コーディング規約を満たしていないコードがマージされることを未然に防ぐ、といった運用が考えられそうです。