GitHub Actions を使用すると、シンプルながら強力なワークフローを作成し、ソフトウェアのコンパイルと配信を GitHub と統合して自動化できます。これらのアクションは YAML ファイルで定義されており、コードのコミット、pull request や新しい GitHub リリースの作成など、任意の GitHub イベントの自動ワークフロー プロセスをトリガーできます。
GitHub が Actions 機能の一般提供開始を本日発表したのに合わせて、Azure 向け GitHub Actions の一般提供開始をここに発表いたします。
Azure 向け GitHub Actions のすべてとそのリポジトリは、GitHub に一覧表示されています。ワークフローを簡単に作成し、push または pull request に続いて、ビルド、テスト、パッケージ化、リリース、Azure へのデプロイを行うのに役立つドキュメントとサンプル テンプレートが用意されています。
さらに、Azure スターター テンプレートを使用すると、Azure を対象とする GitHub CI/CD ワークフローを簡単に作成し、.NET、Node.js、Java、PHP、Ruby、Python などの一般的な言語とフレームワークで作成されたアプリをコンテナーにデプロイしたり、任意のオペレーティング システムで実行したりできます。
Azure に接続する
Azure login (azure/login)
アクションとサービス プリンシパルを使用して、Azure サブスクリプションを認証します。すると、Azure CLI スクリプトを実行し、Azure CLI (azure/cli)
アクションを使用して任意の Azure リソースを作成および管理できるようになります。このアクションは、最新の (またはユーザーが指定した任意の) バージョンの Azure CLI で GitHub Action のランナー環境を設定します。
Web アプリをデプロイする
Azure App Service は、Web アプリケーションをデプロイおよびスケーリングするためのマネージド プラットフォームです。Azure WebApp (azure/webapps-deploy)
アクションと Azure Web App for Containers (azure/webapps-container-deploy)
アクションを使用すると、Web アプリを簡単に Azure App Service にデプロイできます。Azure App Service 設定 (azure/appservice-settings)
アクションを使用してアプリケーション設定と接続文字列を構成することもできます。
Azure App Service について、詳細をご覧ください。
サーバーレス関数アプリをデプロイする
イベントドリブン型のサーバーレス コンピューティング プラットフォームである Azure Functions にサーバーレス アプリケーションをデプロイする場合、Azure Functions アクション (azure/functions-action)
を使用して独自のコードを取り込むか、Azure Functions for containers アクション (azure/functions-container-action)
を使用してお使いのカスタム コンテナー イメージを取り込むことによって効率化できます。
詳細については Azure Functions をご覧ください。
コンテナー化されたアプリをビルドおよびデプロイする
コンテナー化されたアプリ (単一コンテナーまたは複数コンテナー) の場合、Docker Login アクション (azure/docker-login)
を使用して完全なワークフローを作成し、コンテナー イメージをビルドしてコンテナー レジストリ (Docker Hub または Azure Container Registry) にプッシュし、その後、Azure Web アプリ、Azure Function for Containers、または Kubernetes にそのイメージをデプロイします。
Kubernetes にデプロイする
Microsoft では、複数のアクションをリリースしました。これらは、オンプレミスやクラウドで実行されている (Azure Kubernetes Service を含む) Kubernetes クラスターとの接続、マニフェストのベイクとデプロイ、成果物の置き換え、ロールアウト状態の確認、クラスター内でのシークレットの処理に役立ちます。
- Kubectl ツール インストーラー
(azure/setup-kubectl)
:特定のバージョンの kubectl をランナーにインストールします。 - Kubernetes コンテキスト設定
(azure/k8s-set-context)
:ターゲット Kubernetes クラスター コンテキストの設定に使用されます。これは、他のアクションで使用されたり、任意の kubectl コマンドを実行したりできます。 - AKS コンテキスト設定
(azure/aks-set-context)
:ターゲットの Azure Kubernetes Service クラスター コンテキストの設定に使用されます。 - Kubernetes シークレット作成
(azure/k8s-create-secret)
:汎用シークレットや docker-registry シークレットを Kubernetes クラスターに作成します。 - Kubernetes デプロイ
(azure/k8s-deploy)
:Kubernetes クラスターにマニフェストをデプロイする際に使用します。 - Helm セットアップ
(azure/setup-helm)
:特定のバージョンの Helm バイナリをランナーにインストールします。 - Kubernetes ベイク
(azure/k8s-bake)
:Helm 2、kustomize、Kompose を使用したデプロイに使用されるマニフェスト ファイルをベイクする際にこのアクションを使用します。
Azure Kubernetes Service (AKS) にクラスターをデプロイする場合は、azure/aks-set-context
を使用してその AKS クラスターと通信し、azure/k8s-create-secret
を使用してイメージ プル シークレットを作成し、最後に azure/k8s-deploy
を使用してマニフェスト ファイルをデプロイします。
Azure SQL Database や MySQL データベースにデプロイする
Azure SQL Database 用のアクション (azure/sql-action)
が用意されました。これは、認証スクリプトや DACPAC/SQL スクリプトに接続文字列を使用して Azure SQL Database にデプロイします。
MySQL スクリプトを使用して Azure Database for MySQL データベースにデプロイするには、MySQL アクション (azure/mysql-action)
を代わりに使用します。
Azure Pipelines での実行をトリガーする
GitHub Actions を使用すると、コードを直接 GitHub から簡単にビルド、テスト、デプロイできますが、GitHub Actions を使用して Azure Pipelines などの外部 CI/CD ツールやサービスをトリガーすることもできます。ワークフローで、Azure Pipelines を実行して特定の Azure Pipelines 環境にデプロイすることが必要になる場合、たとえば、Azure Pipelines (azure/pipelines)
アクションを使用すると、この実行を Actions ワークフローの一部としてトリガーできます。
ユーティリティ アクション
最後に、変数置換 Microsoft/variable-substitution
のためのアクションもリリースされました。これを使用すると、GitHub Action ワークフローに含まれる JSON、XML、YAML ファイル (構成ファイルやマニフェストなど) 内の値をパラメーター化できます。
近日公開予定
今後も、利用可能な一連の GitHub Actions の改善に努め、より多くの Azure サービスに対応できるよう新しいアクションをリリースしていく予定です。
Azure 向け GitHub Actions をお試しのうえ、Twitter の @Azure までフィードバックをお寄せください。問題が発生した場合、特定のアクションに関する GitHub リポジトリで問題をオープンしてください。