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

2019年11月13日 に投稿済み

Program Manager

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