Azure 向け GitHub Actions のプレビューのお知らせ

2019年8月13日 に投稿済み

Principal Program Manager, Azure DevOps

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 レジストリでも使用できます。

GitHub 向け Azure アクション

完全な例

コンテナー イメージを構築し、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 リポジトリで問題をオープンしてください。