• 3 min read

Azure 向け GitHub Actions の一般提供開始

GitHub Actions を使用すると、シンプルながら強力なワークフローを作成し、ソフトウェアのコンパイルと配信を GitHub と統合して自動化できます。これらのアクションは YAML ファイルで定義されており、コードのコミット、pull request や新しい GitHub リリースの作成など、任意の GitHub イベントの自動ワークフロー プロセスをトリガーできます。

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 リポジトリで問題をオープンしてください。