開発プロセスを自動化することは、より迅速で正確な開発を実現するための重要な鍵です。そこで本記事では、開発プロセスの自動化に役立つシステム「GitHub Actions」の概要やメリットを解説します。Microsoft Azureのユーザーに便利なアクションも紹介するので、ぜひご参考にしてください。
GitHub Actions とは
GitHub Actionsとは、GitHubと連動したワークフローを構築できるシステムです。プッシュ、プルリクエスト、リリースなどGitHub上の豊富なイベントを受け付けて、CI/CD関連のワークフローを起動できます。
GitHub Actionsは、ビルド・テスト・デプロイなど、一般的なタスクを自動的に実行できる既定アクションを数多く提供しています。特定のタスクを実行するために独自のカスタムアクションを作成することも可能です。総じて言えば、GitHub Actionsは開発現場のワークフローを自動化し、開発時間の短縮や生産性を向上させるために役立ちます。
CI/CDとは
CI/CDとは「継続的インティグレーション(Continuous Integration)」と「継続的デリバリー(Continuous Delivery)」の略称で、ソフトウェア開発プロセスの自動化に関連した概念です。CIは、開発者がコードの変更をプッシュする際に、自動的にビルドやテストなどを行うプロセスを指します。他方でCDは、CI後にサービスを自動的にリリース・デプロイするプロセスのことです。
つまり、CI/CDを活用することで、開発現場のワークフローを自動化し、従来より短時間での開発を実現できます。GitHub Actionsは、こうしたCI/CDの機能をGitHubにおいてワンストップで使えるようにするソリューションです。また、GitHub Actionsは各プルリクエストに対してシームレスに連携できるので、よりスムーズな自動化プロセスを構築し、開発環境の利便性を高めることが可能になります。
GitHub Actions のワークフロー(workflow)
GitHub Actionsのワークフローとは、実行したい処理とその実行処理の条件定義を指します。ワークフローはYAML構文で定義を行い、.github/workflowsディレクトリへ保存することで実行できます。また、一度作成したワークフローは再利用が可能です。
ワークフロー内では、任意のコマンドのほか、あらかじめ定義済みの処理(アクション)を実行できます。また、複数のアクションを組みあわせてワークフローを構築することも可能です。ワークフローの中にアクションを積極的に組み込むことで、これまで手作業で行っていた処理を減らし、リリースの速度や品質を向上できます。
GitHub Actions のメリット
GitHub Actionsのメリットは以下の通りです。
ユーザーが自前でサーバーを用意する必要がない
GitHub Actionsは、クラウド上で動作するため、ユーザーが自分自身でサーバーを用意する必要がありません。これにより、サービスの導入や設定、管理運用にかかるコストや手間を削減できます。
プルリクエストとの連携がシームレス
GitHub Actionsは、GitHubと完全に統合されているため、プルリクエストとシームレスに連携可能です。これにより、ビルドやテストなどの作業を簡単に自動化できます。
無料枠が多い
GitHub Actionsには、無料で使用できる枠が多数用意されていため、低コストで利用を開始することが可能です。
アクションが豊富
GitHub Actionsには、豊富なアクションがあらかじめ用意されているため、少ない手間で開発プロセスの自動化を推進できます。既存のアクションをベースに、足りないところを自分でカスタマイズしたり記述したりすれば、作業時間の短縮やコードミスの削減が可能です。
これらのメリットがあるGitHub Actionsは、効率よく取り入れることで、開発の向上や品質を高めることができるようになります。
Azure ユーザーに便利な GitHub Marketplace 上のおすすめアクション
GitHub Actionsは、Microsoft Azure(以下、Azure)の利便性を高めるためにも役立ちます。このあとGitHub Marketplace上で取得できるAzureユーザーに便利なアクションを紹介するので、参考にしてください。
Azure/login
Azureにアクセスするときに役立つアクションです。このアクションを使用すると、az loginが実行されます。また、Az PowerShellモジュールに切り替えることも可能です。サービス プリンシパルとOpenID Connect、2つの認証方法があります
OpenID Connect による認証について
OpenIDとは、IDや認証などの情報を様々なWebサービスで利用できるプロトコルです。Azureの認証では、サービスプリンシパルが主流ですが、OpenID Connectならより安全に利用できます。「シークレットの扱いが不要になる」「認証と認可の管理を明確化できる」「資格情報のローテーションが行われる」などが主なメリットです。
Azure/cli
Azure CLIコマンドを実行してAzureリソースを利用し、ワークフローを自動化できるアクションです。GitHubホステッドランナーにインストールされており、ユーサーが指定したとき以外は、最新版のバージョンで実行されます。セルフホステッドランナーの利用やバージョン指定をしたいときに便利です。
Azure/arm-deploy
ARM templateやBicepでデプロイをするときに使うアクションです。このアクションを活用することで、Azureのリソース管理をするワークフローなどを自動化できます。
Azure/functions-action
Azure Functionsへのデプロイを自動化するアクションです。自動でコードをzip圧縮してWEBSITE_RUN_FROM_PACKAGEでデプロイしてくれるので、zip圧縮の手間を省けます。スロット指定や、pom.xmlの利用、Kudu pre-deploymentの実行、oryx buildの利用なども可能です。
Azure/webapps-deploy
Azure Web AppsやAzure Web Apps for Containersへの自動デプロイを可能にするアクションで、フォルダ、.jar、.war、.zipファイルをデプロイしてくれます。スロット指定やstartup-commandの実行も可能です。
Azure/static-web-apps-deploy
Azure Static Web Appsへのアプリケーションのビルドとデプロイを行うアクションです。プルリクエストイベントの場合、自動的にプレビュー環境にデプロイしてくれます。Azure側の仕組みが完全に連携されており、完成度の高いアクションです。
Azure/container-apps-deploy
Azure Container Appsへのイメージビルドやデプロイを自動化するアクションです。「コンテナイメージのビルド」「Azure Container Registry へのプッシュ」「Azure Container Appsへのデプロイ」までの3ステップをワンストップで処理してくれるので、非常に便利です。
Azure/aca-review-apps
Azure/aca-review-appsでは、Azure Container Appsに新しいリビジョンを自動的に作成できます。複数のリビジョンモードを利用して、ステージング用の環境を構成可能です。デプロイのみに対応しています。
まとめ
紹介したように、GitHub Actionsを活用することで、開発プロセスの自動化を推進することが可能です。GitHub ActionsはGitHub内に統合されているので、プルリクエストごとのシームレスな連携を実現できます。サーバーを自前で用意する必要もなく、低コストで導入できるのも魅力的な点です。また、Microsoft Azureユーザーにとって便利なアクションも多数あるので、GitHubとAzureを活用して開発プロセスを改善したい方は、ぜひGitHub Actionsをご活用ください。