2019 年 10 月 15 日更新: 以下に記載されているアクションの一部は、プレビューの間、新しい GitHub リポジトリに移動されましたのでご注意ください。 更新された手順については、「Azure/アクションの GitHub リポジトリ」をご覧ください。
2019 年 8 月 8 日 (木)、GitHub は、継続的インテグレーションと継続的デリバリー (CI/CD) のサポートを含む GitHub アクションのプレビューを発表しました。この Azure アクションを使用すると、シンプルながら強力なパイプラインを作成し、ソフトウェアのコンパイルと配信を自動化することができます。本日は、Azure 向け GitHub Actions のプレビューを発表いたします。
これらの新しいアクションにより、開発者が迅速にコードをビルドおよびテストし、Azure を使用して GitHub リポジトリからクラウドに移行できます。
最初の一連のアクションは GitHub の 4 つのリポジトリに分類され、それぞれに、CI/CD に GitHub を使用し、ご自身のアプリを Azure にデプロイする際に役立つドキュメントとサンプルが含まれています。
- azure/actions (ログイン): Azure サブスクリプションで認証します。
- azure/appservice-actions: Web Apps および Web Apps for Containers 機能を使用して、アプリを Azure App Services にデプロイします。
- azure/container-actions: Docker Hub、Azure Container Registry などのコンテナー レジストリに接続し、コンテナー イメージをビルドおよびプッシュします。
- azure/k8s-actions: Azure Kubernetes Service (AKS) などの Kubernetes クラスターに接続し、デプロイします。
Azure に接続する
ログイン アクション (azure/actions
) により、Azure サブスクリプションに安全に接続できます。
手順に示すように、このプロセスでは、Azure CLI を使用して生成できるサービス プリンシパルを使用する必要があります。GitHub アクションの組み込みシークレット ストアを使用して、このコマンドの出力を安全に保存してください。
お使いのワークフローにコンテナーが含まれる場合は、Azure サービスへの接続に、azure/k8s-actions/docker-login
アクション (Container Registry の場合) および azure/container-actions/aks-set-context
(AKS の場合) を使用することもできます。
これらのアクションは、ワークフローの残りのコンテキストを設定する際に役立ちます。たとえば、azure/container-actions/docker-login
を使用したら、ワークフローの次のアクション セットによって、コンテナー イメージのビルド、タグ付け、Container Registry へのプッシュなどのタスクを実行できます。
Web アプリをデプロイする
Azure App Service は、Web アプリケーションをデプロイおよびスケーリングするためのマネージド プラットフォームです。azure/appservice-actions/webapp
アクションおよび azure/appservice-actions/webapp-container
アクションを使用すると、お使いの Web アプリを簡単に Azure App Service にデプロイできます。
azure/appservice-actions/webapp
アクションは、アプリ名と、アーカイブ (*.zip, *.war, *.jar) へのパス、またはデプロイするフォルダーをとります。
azure/appservice-actions/webapp-container
では、コンテナー化されたアプリ (複数コンテナー アプリを含む) のデプロイがサポートされます。azure/container-actions/docker-login
と組み合わせることで、完全なワークフロー、つまりコンテナー イメージをビルドし、Container Registry にプッシュして、Web Apps for Containers にデプロイするワークフローを作成できます。
Kubernetes にデプロイする
azure/k8s-actions/k8s-deploy
は、Kubernetes クラスターへの接続、マニフェストのベイクとデプロイ、成果物の置き換え、ロールアウト状態の確認、および AKS でのシークレットの処理に役立ちます。
azure/k8s-actions/k8s-create-secret
アクションでは、Kubernetes シークレット オブジェクトが作成されます。これは、パスワード、API トークンなど、秘匿性の高い情報を管理するときに役立ちます。特に、AKS 自体がレジストリからプライベート イメージをプルするときに使用される Docker-registry シークレットが含まれています。このアクションによって、GitHub アクションの組み込みシークレット ストアから Kubernetes クラスターに値を設定できます。
Kubernetes 向けのアクションや Dockerレジストリとやり取りするためのアクションなど、コンテナーを中心としたアクションは Azure 固有のものではありません。これらのアクションは、オンプレミスまたは他のクラウドで実行される Kubernetes クラスター (セルフホステッドのクラスターを含む) のほか、任意の Docker レジストリでも使用できます。
完全な例
コンテナー イメージを構築し、Container Registry にプッシュしてから、マニフェスト ファイルを使用して AKS クラスターにデプロイするエンド ツー エンド ワークフローの例を次に示します。
on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: azure/container-actions/docker-login@master with: login-server: contoso.azurecr.io username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - run: | docker build . -t contoso.azurecr.io/k8sdemo:${{ github.sha }} docker push contoso.azurecr.io/k8sdemo:${{ github.sha }} # Set the target AKS cluster. - uses: azure/k8s-actions/aks-set-context@master with: creds: '${{ secrets.AZURE_CREDENTIALS }}' cluster-name: contoso resource-group: contoso-rg - uses: azure/k8s-actions/k8s-create-secret@master with: container-registry-url: contoso.azurecr.io container-registry-username: ${{ secrets.REGISTRY_USERNAME }} container-registry-password: ${{ secrets.REGISTRY_PASSWORD }} secret-name: demo-k8s-secret - uses: azure/k8s-actions/k8s-deploy@master with: manifests: | manifests/deployment.yml manifests/service.yml images: | demo.azurecr.io/k8sdemo:${{ github.sha }} imagepullsecrets: | demo-k8s-secret
より多くの Azure 向け GitHub Actions
GitHub Actions の勢いに乗り、このたび、最初の Azure 向け GitHub Actions のプレビューをリリースしました。今後数か月にわたり、利用可能なアクションの改善に努め、より多くの Azure サービスに対応できるよう新しいアクションをリリースしていく予定です。
Azure 向け GitHub アクションをお試しのうえ、Twitter アカウント @AzureDevOps まで、ぜひフィードバックをお寄せください、Developer Community をご利用いただくこともできます。プレビュー期間中にコンテナーで問題が発生した場合、特定のアクションについては、GitHub リポジトリで問題をオープンしてください。