こんにちは。
株式会社アドグローブ ソリューション事業部の岡です。
新卒研修の担当で技術調査を行った際に使ってみたGitHub Actionsがとても便利に感じたので、今回の記事でご紹介します。
GitHub Actionsとは
GitHubへの操作をトリガーに、ユニットテストやデプロイなどの様々な処理をGitHub側で自動的に行うことが出来る機能のことです。
実態はGitHubで用意されたコンテナ、もしくはリポジトリ内に設置されたDockerFileの定義を参照して生成されたコンテナ上で各種ジョブを実行することで上記機能を実現しています。
GitHub Actionsで出来ること
例えば、ローカルブランチの作業内容をコミットした後、リモートにpushされたタイミングでビルドとユニットテストが通るかチェックする。
PRがdevelopブランチにマージされたら自動的にデプロイを行ってテスト環境に反映する。など、GitHubに対しての操作をトリガーとして、軽量のコンテナで実行可能な様々なアクションを行うことが出来ます。仮想通貨のマイニングなどの負荷の大きい処理には利用できないようです。
その他GitHub Actionsで検知できるトリガーの一覧は以下の公式ドキュメントに纏まっているので是非ご参照ください。
Events that trigger workflows | GitHub Docs
自動テストを行ってみる
ではこれまでのことを踏まえて、実際にGitHubActionsを使ってみます。
今回は、リモートリポジトリへのpushをトリガーにユニットテストを自動実行させてみたいと思います。
Swift向けに公式で用意されているアクションがあったので今回はそちらを利用します。
yamlの各項目を解説します。
name: Swift on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: Build run: swift build -v - name: Run tests run: swift test -v
name
アクションの名前を定義することが出来ます。(省略可能)
on
ワークフロー実行のトリガーを指定します。
push, pull_request (トリガー種別)
ワークフロー実行のトリガー種別。
今回は対象ブランチがpushされた時、PRの際にワークフローを実行するよう指定しています。
branches
指定したトリガー種別の対象ブランチを指定します。
jobs
実行するジョブを記載します。
build
ジョブ名。任意の名前を指定可能です。
runs-on
ジョブを実行する環境を指定します。今回はiOSアプリのビルドテストなのでmacOSを利用しています。
steps
ジョブの内容を記載します。
uses
GitHub Actions プラットフォームなどで定義されているアクション名を指定することで、外部のアクションやスクリプトを取り込むことが可能です。
name
ジョブの各ステップ名を記載します。
run
ジョブの各ステップで実行する内容を記載します。
したがって、今回の場合は 『 mainブランチにpush、もしくはPRのタイミングで ビルドとユニットテスト実行する 』 という設定が書かれていることになります。
実際にリモートリポジトリのmainブランチにpushを行って表示された結果がこちらです。 緑のチェックがついていればビルドとユニットテストが通ったことになります!
もし上記が失敗した場合は、PRに下記のような警告が表示され、マージ前にテストが失敗していることを通知してくれます。
まとめ
いかがでしたでしょうか。
最近よく耳にするGitHub Actionsを用いた自動テストの実装方法
GitHub Actionsを利用した自動化の例はCI/CDの他にも下記のような事例がありました。
・Draft状態のPRがOpenになったことをトリガーに、Slackに通知を飛ばす
・developブランチへのマージをトリガーに、自動でリリース用のPRを作成する など
業務で繰り返し行っている作業を自動化出来ると作業速度も上がり、他の作業に集中できて良いなと感じました。
皆さんも是非GitHub Actionsを使って日々の業務を自動化してみてください!
参照サイト
GitHub Actionsのドキュメント - GitHub Docs
今回の記事がGitHub Actionsを使うきっかけとなれれば幸いです。
最後までお読みいただきありがとうございます。