
はじめに
1ヶ月ぶりに業務コードをコミットできた幸せ脳でPushしたら、間違ってDevelopブランチにPushしてチームメンバーに苦笑された佐藤です(コミットはたまたま通りかかった.NET Developerの和田くんに泣きついて救出できました)。
GitHubなんとなく使ってるけどもうちょいちゃんと勉強した方がいいなーと思って調べていたところ、「Azure向けGitHub Actionsの一般提供を開始」という記事を紹介していただきました。
そこで、今回は初心者がAzure 向け GitHub Actionsを調べてみたまとめをお送りします。
「Azure向けGitHub Actionsの一般提供を開始」の要約
まずは元記事から分かることをまとめてみました。
- Azure向けGitHub Actionsの一般提供を開始
- ソフトウェアのコンパイルと配信を自動化することができる
- アクションはYAMLファイルに定義
- GitHubイベントを自動ワークフロープロセスのトリガーにすることができる
- Azure向けGitHub Actionsはリポジトリやドキュメントとともにサンプルテンプレートが公開されている
- Azureスターターテンプレートを使用すると、Azure を対象とするGitHub CI/CDワークフローを簡単に作成できて、.NETやNode.jsなどの言語とフレームワークで作成したアプリをコンテナーにデプロイできる
- 詳細は英語記事を参照
正直、実際それってどうなるのかがイメージつかないものが多かったので、この記事では基本的な単語をまとめてから、「GitHub Actionsで何ができるようになったのか」を抑えていきたいと思います。
基本的な単語
ご存じの方は読み飛ばしてください。
GitHub Actionsについてと継続的インテグレーションについて、CD(継続的デリバリー)から引用させていただきました。
ワークフロー
> ワークフローとは、GitHubで任意のコードプロジェクトをビルド、テスト、パッケージ、リリース、またはデプロイするためにリポジトリで設定できる、カスタムの自動プロセスです。
継続的インテグレーション
> 継続的インテグレーション (CI) とは、ソフトウェアの開発においてコードを頻繁に共有リポジトリにコミットする手法のことです。 コードをコミットする頻度が高いほどエラーの検出が早くなり、開発者がエラーの原因を見つけようとしてデバッグする必要性も減ります。 コードの更新が頻繁であれば、ソフトウェア開発チームの他のメンバーによる変更をマージするのも、それだけ容易になります。 開発者がコードの記述にばかり時間をとられ、エラーのデバッグやマージコンフリクトの解決にかける時間が少ないときに威力を発揮します。
継続的デリバリー
> CDとは、Continuous Deliveryの略で、継続的デリバリーと呼ばれています。
> 継続的デリバリー(CD)は、継続的インテグレーション(CI)を拡張した手法で、ビルドやテストだけでなく、リリースプロセス全体を自動化します。実施の目的はDevOpsと同様で、リリーススピードを上げることで、素早く市場からフィードバックを得られ、ソフトウェアに反映させることができます。ビジネス戦略を細かく修正しながら進めることで、リスクの低減とソフトウェアの競争力向上を目的とします。
> 継続的デリバリー(CD)では、すべてのコード変更は、ビルドとテストを実行した後、テスト環境またはステージング環境にデプロイして、システムテストやUIテストを行います。開発者は、準備ができた時点で、最後のステップとして運用環境への更新を承認します。
> この点は、運用環境へのデプロイが明示的な承認なしで自動的に行われる「継続的デプロイ」とは異なります。

GitHub Actionsで何ができるようになったのか

公式ページを参照した結果、GitHub Actionsでできるようになったことは以下です。
- アイデアからリリースまでのワークフローを自動化可能
- CI / CDですべてのソフトウェアワークフローを簡単に自動化可能
- GitHubから直接コードをビルド、テスト、デプロイでき、コードレビュー、ブランチ管理などができる
- GitHubのすべてのイベントでワークフローを起動可能
- プッシュ、Issue、リリースなどのGitHubプラットフォームのイベントをトリガーとしてワークフローを起動できる
- ユーザが熟知・愛用している様々なサービスコミュニティ(Azure, AWS etc...)が開発・保守しているアクションを利用できる
GitHubでCI/CDを管理できる機能がGitHub Actionsのようですね。 また、GitHub Actionsの特徴は以下の6点だそうです。
- Linux、 macOS、 Windowsおよびコンテナに対応
- マトリックスビルド:複数のOSとランタイムのバージョンを同時にテスト可能
- あらゆる言語に対応:Node.js, Python, Java, Ruby, PHP, Go, Rust, .NETなど
- ライブログ:ワークフローの実行ログは色や絵文字付きでリアルタイムに確認可能。ログの行を1回クリックするだけで、その行をハイライトしてリンクをコピーできる
- 組み込みのシークレット管理機能
- マルチコンテナテスト

実際のアクションを見ていきたいと思います。
Actionsのページにアクセスして、「azure」と検索すると22個ヒットしました。

思い入れのあるAzure WebAppを試しにクリックしてみると、以下のようなページに遷移しました。 ここには使い方とサンプルコードが置いてありました。

アクションが定義されたYAMLファイルの例は以下です。

おわりに
今回は初心者がAzure 向け GitHub Actionsを調べてみたまとめとして、基本的な単語をまとめてから、「GitHub Actionsで何ができるようになったのか」を書かせていただきました。
GitHubでCI/CDを管理できるGitHub Actions、私は直近ではまだ使う機会がなさそうですが、利用したらまた記事にしていきたいと思います。