Azure Pipelines と Cloud Run を使用した CI / CD パイプラインの作成


このチュートリアルでは、Azure PipelinesCloud RunContainer Registry を使用して、ASP.NET MVC コア ウェブ アプリケーションの継続的インテグレーション / 継続的デプロイ(CI / CD)パイプラインを作成する方法について説明します。

次の図に示すように、CI / CD パイプラインは、開発用と本番環境用の 2 つの Google Cloud プロジェクトを使用します。

Azure のビルド パイプラインとリリース パイプラインが、Google Cloud の本番環境パイプラインおよび開発パイプラインと情報をやり取りする仕組みに関するアーキテクチャ。

パイプラインの開始時に、デベロッパーがサンプル コードベースへの変更を commit します。このアクションがトリガーとなり、パイプラインによってリリースが作成され、開発クラスタの Cloud Run にデプロイされます。その後リリース管理者がリリースをプロモートし、本番環境プロジェクトにデプロイします。

このチュートリアルは、デベロッパーと DevOps エンジニアを対象としています。.NET Core、Azure Pipelines、Cloud Run、git に関する基本的な知識があることを前提としています。このチュートリアルを完了するには、Azure DevOps アカウントに対する管理者権限が必要です。

目標

  • Docker イメージを公開するために Container Registry を Azure Pipelines に接続する。
  • Cloud Run にデプロイするための .NET Core サンプルアプリを準備する。
  • Azure Pipelines と Google Cloud 間の認証を設定する。
  • Azure Pipelines リリース管理を使用して Cloud Run のデプロイをオーケストレートする。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

Azure DevOps を使用した場合に適用される可能性がある費用については、Azure DevOps の料金ページをご覧ください。

始める前に

このチュートリアルでは、開発用と本番環境用の 2 つの個別のプロジェクトを使用します。個別のプロジェクトを使用することで、リリースを本番環境にデプロイする前にテストできます。また、Identity and Access Management(IAM)のロールと権限を個別に管理することもできます。

  1. 開発用の Google Cloud プロジェクトを作成します。このチュートリアルでは、このプロジェクトを開発プロジェクトと呼びます
  2. 本番環境用の Google Cloud プロジェクトを作成します。このチュートリアルでは、このプロジェクトを本番環境プロジェクトと呼びます
  3. Make sure that billing is enabled for your Google Cloud project.

  4. Azure DevOps アカウントがあり、そのアカウントに対する管理者権限があることを確認します。まだ Azure DevOps アカウントがない場合は、Azure DevOps ホームページで登録できます。

Azure DevOps プロジェクトを作成する

Azure DevOps を使用して、ソースコードの管理、ビルドとテストの実行、Cloud Run へのデプロイのオーケストレートを行います。はじめに、Azure DevOps アカウントでプロジェクトを作成します。

  1. Azure DevOps ホームページ(https://dev.azure.com/YOUR_AZURE_DEVOPS_ACCOUNT_NAME)に移動します。
  2. [New Project] をクリックします。
  3. CloudDemo などのプロジェクト名を入力します。
  4. [Visibility] を [Private] に設定してから、[Create] をクリックします。
  5. プロジェクトを作成したら、左側のメニューで [Repos] をクリックします。
  6. [Import] をクリックして GitHub から dotnet-docs-samples リポジトリを fork し、次の値を設定します。
    • Repository type: Git
    • Clone URL: https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
  7. [Import] をクリックします。

    インポート処理が完了すると、dotnet-docs-samples リポジトリのソースコードが表示されます。

Container Registry に Azure Pipeline を接続する

CloudDemo アプリの継続的インテグレーションを設定する前に、Azure Pipelines を Container Registry に接続する必要があります。この接続により、Azure Pipelines はコンテナ イメージを Container Registry に公開できます。

イメージを公開するためのサービス アカウントを設定する

本番環境プロジェクトに Google Cloud サービス アカウントを作成します。

  1. Google Cloud コンソールで、本番環境プロジェクトに切り替えます。
  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  3. 次の環境変数を初期化します。

    DEV_PROJECT_ID=DEV_PROJECT_ID
    PROD_PROJECT_ID=PROD_PROJECT_ID
    

    以下を置き換えます。

    • DEV_PROJECT_ID: 開発プロジェクトのプロジェクト ID
    • PROD_PROJECT_ID: 本番環境プロジェクトのプロジェクト ID
  4. 本番環境プロジェクトで Container Registry API を有効にします。

    gcloud services enable containerregistry.googleapis.com \
        --project=$PROD_PROJECT_ID
    
  5. Azure Pipelines が Docker イメージの公開に使用するサービス アカウントを作成します。

    gcloud iam service-accounts create azure-pipelines-publisher \
        --display-name="Azure Pipelines Publisher" \
        --project=$PROD_PROJECT_ID
    
  6. サービス アカウントにストレージ管理者の IAM ロールroles/storage.admin)を付与して、Azure Pipelines が Container Registry に push できるようにします。

    AZURE_PIPELINES_PUBLISHER=azure-pipelines-publisher@$PROD_PROJECT_ID.iam.gserviceaccount.com
    
    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member serviceAccount:$AZURE_PIPELINES_PUBLISHER \
        --role roles/storage.admin \
        --project=$PROD_PROJECT_ID
    
  7. サービス アカウント キーを生成します。

    gcloud iam service-accounts keys create azure-pipelines-publisher.json \
        --iam-account $AZURE_PIPELINES_PUBLISHER \
        --project=$PROD_PROJECT_ID
    
    tr -d '\n' < azure-pipelines-publisher.json > azure-pipelines-publisher-oneline.json
    
  8. サービス アカウント キーファイルの内容を表示します。

    echo $(<azure-pipelines-publisher-oneline.json)
    

    次の手順のいずれかでサービス アカウント キーが必要になります。

Container Registry 用のサービス接続を作成する

Azure Pipelines で、Container Registry 用の新しいサービス接続を作成します。

  1. Azure の [DevOps] メニューで、[Project settings] を選択してから、[Pipelines] > [Service connections] の順に選択します。
  2. [Create service connection] をクリックします。
  3. リストから [Docker Registry] を選択し、[Next] をクリックします。
  4. ダイアログの以下のフィールドに値を入力します。
    • Registry type: Others
    • Docker Registry: https://gcr.io/PROD_PROJECT_IDPROD_PROJECT_ID は本番環境プロジェクト名に置き換えます(例: https://gcr.io/azure-pipelines-test-project-12345)。
    • Docker ID: _json_key
    • Password: azure-pipelines-publisher-oneline.json の内容を貼り付けます。
    • Service connection name: gcr-tutorial
  5. [Save] をクリックして接続を作成します。

継続的なビルド

この段階で Azure Pipelines を使用して継続的インテグレーションを設定できます。commit によって Git リポジトリへの push を行うたびに、Azure Pipelines によってコードがビルドされ、そのビルドのアーティファクトが Docker コンテナにパッケージ化されます。そのコンテナは Container Registry に公開されます。

リポジトリには、すでに次の Dockerfile が含まれています。

#
# Copyright 2020 Google LLC
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

FROM mcr.microsoft.com/dotnet/aspnet:6.0
EXPOSE 8080

#------------------------------------------------------------------------------
# Copy publishing artifacts.
#------------------------------------------------------------------------------

WORKDIR /app
COPY CloudDemo.MvcCore/bin/Release/net6.0/publish/ /app/

ENV ASPNETCORE_URLS=http://0.0.0.0:8080

#------------------------------------------------------------------------------
# Run application in Kestrel.
#------------------------------------------------------------------------------

ENTRYPOINT ["dotnet", "CloudDemo.MvcCore.dll"]

YAML 構文を使用する新しいパイプラインを作成します。

  1. Visual Studio またはコマンドライン git クライアントを使用して、新しい Git リポジトリのクローンを作成します。
  2. リポジトリのルートで、azure-pipelines.yml という名前のファイルを作成します。
  3. 次のコードをファイルにコピーします。

    resources:
    - repo: self
      fetchDepth: 1
    queue:
      name: Hosted Ubuntu 1604
    trigger:
    - master
    variables:
      TargetFramework: 'net6.0'
      BuildConfiguration: 'Release'
      DockerImageName: 'PROD_PROJECT_ID/CloudDemo'
    steps:
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        projects: 'applications/clouddemo/netcore/CloudDemo.MvcCore.sln'
        publishWebProjects: false
        command: publish
        arguments: '--configuration $(BuildConfiguration) --framework=$(TargetFramework)'
        zipAfterPublish: false
        modifyOutputPath: false
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact'
      inputs:
        PathtoPublish: '$(build.artifactstagingdirectory)'
    - task: Docker@2
      displayName: 'Login to Container Registry'
      inputs:
        command: login
        containerRegistry: 'gcr-tutorial'
    - task: Docker@2
      displayName: 'Build and push image'
      inputs:
        Dockerfile: 'applications/clouddemo/netcore/Dockerfile'
        command: buildAndPush
        repository: '$(DockerImageName)'

    PROJECT_ID を本番環境プロジェクトの名前に置き換えて、ファイルを保存します。

    Cloud Run は Linux ベースの環境であるため、パイプラインは Linux ベースのビルド エージェントを使用します。

  4. 変更を commit し、Azure Pipelines に push します。

    Visual Studio

    1. チーム エクスプローラーを開き、[Home] アイコンをクリックします。
    2. [変更] をクリックします。
    3. Add pipeline definition」といった Commit メッセージを入力します。
    4. [すべてをコミットしてプッシュ] をクリックします。

    コマンドライン

    1. 変更されたすべてのファイルをステージングします。

      git add -A
      
    2. ローカル リポジトリへの変更を commit します。

      git commit -m "Add pipeline definition"
      
    3. Azure DevOps への変更を push します。

      git push
      
  5. Azure DevOps のメニューで、[Pipelines] を選択して、[Create Pipeline] をクリックします。

  6. [Azure Reposs Git] を選択します。

  7. リポジトリを選択します。

  8. [Review your pipeline YAML] ページで、[Run] をクリックします。

    新しいビルドがトリガーされます。ビルドが完了するまでに 2 分ほどかかる場合があります。

  9. イメージが Container Registry に公開されたことを確認するには、Google Cloud コンソールで本番環境プロジェクトに切り替えて、[Container Registry] > [イメージ] の順に選択し、[CloudDemo] をクリックします。

    1 つのイメージと、そのイメージのタグが表示されます。このタグは、Azure Pipelines で実行されたビルドの数値 ID に対応しています。

継続的デプロイ

commit するたびに Azure Pipelines で自動的にコードのビルドと Docker イメージの公開が実施されるようになったら、デプロイするための操作に移行できます。

他の継続的インテグレーション システムとは異なり、Azure Pipelines ではビルドとデプロイが区別され、デプロイ関連のすべてのタスクに、リリース管理というラベルが付けられた専用のツールセットが提供されます。

Azure Pipelines リリース管理は、次のコンセプトに基づいて構築されています。

  • リリースは、通常はビルドプロセスの結果からなる、アプリの特定のバージョンを形成するアーティファクト群である。
  • デプロイは、リリースを特定の環境に導入する過程である。
  • デプロイによって一連のタスクが実行される。タスクはジョブでグループ化できる。
  • ステージによってパイプラインを分割でき、ステージを使用することで、開発環境やテスト環境などの複数の環境へのデプロイをオーケストレートできる。

新しくビルドが完了すると、必ずリリース パイプラインがトリガーされるように設定します。パイプラインは、開発と本番環境の 2 つのステージで構成されています。各ステージでリリース パイプラインは、ビルド パイプラインが生成する Docker イメージを使用して Cloud Run にデプロイします。

前もって構成しておいたビルド パイプラインは、Docker イメージを Container Registry に公開する前に、ビルド ID でタグ付けします。これにより、リリース パイプラインでは、$BUILD_BUILDID 変数を使用してデプロイすべき Docker イメージを正確に識別します。

Cloud Run を構成する

Cloud Run はフルマネージドのサーバーレス環境であるため、インフラストラクチャをプロビジョニングする必要はありません。Cloud Run のデプロイの安全性を確保できるように、IAM を設定する必要があります。

次の図に示すように、Cloud Run サービスのデプロイと実行には複数の ID が必要となります。

Cloud Run デプロイでサービス アカウントとして実行される ID。

各 ID はサービス アカウントとして実装され、次の表で示すように、特定の目的で使用されます。

サービス アカウント 使用元 目的 必要なロール
Azure Pipelines Publisher ビルド パイプライン Container Registry に Docker イメージを公開する roles/storage.admin(本番環境プロジェクト専用)
Azure Pipelines Deployer リリース パイプライン Cloud Run のデプロイを開始する roles/run.admin
CloudDemo サービスを起動する roles/iam.serviceAccountUser
Cloud Run サービス エージェント Cloud Run Container Registry から Docker イメージを pull する roles/storage.objectViewer(本番環境プロジェクト専用)
CloudDemo ランナー(ランタイム サービス アカウント CloudDemo サービス Google Cloud のリソースにアクセスする なし

Azure Pipelines Publisher のサービス アカウントの作成と構成を行いました。以下のセクションでは、残りのサービス アカウントの作成と構成を行います。

Cloud Run サービス アカウントを構成する

  1. Cloud Shell を開きます。

  2. 次の環境変数を初期化します。

    DEV_PROJECT_ID=DEV_PROJECT_ID
    PROD_PROJECT_ID=PROD_PROJECT_ID
    

    以下を置き換えます。

    • DEV_PROJECT_ID: 開発プロジェクトのプロジェクト ID
    • PROD_PROJECT_ID: 本番環境プロジェクトのプロジェクト ID
  3. 開発プロジェクトと本番環境プロジェクトの両方で Cloud Run API と Compute Engine API を有効にします。

    gcloud services enable run.googleapis.com --project=$DEV_PROJECT_ID
    gcloud services enable run.googleapis.com --project=$PROD_PROJECT_ID
    

    これらの API を有効にすると、Cloud Run サービス エージェント アカウントがプロジェクトに作成されます。

  4. 2 つの Cloud Run サービス エージェント アカウントに、Docker イメージが格納されている本番環境プロジェクトの Container Registry へのアクセス権を付与します。

    DEV_PROJECT_NUMBER=$(gcloud projects describe $DEV_PROJECT_ID \
        --format='value(projectNumber)')
    PROD_PROJECT_NUMBER=$(gcloud projects describe $PROD_PROJECT_ID \
        --format='value(projectNumber)')
    
    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member=serviceAccount:service-$DEV_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
        --role roles/storage.objectViewer
    
    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member=serviceAccount:service-$PROD_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
        --role roles/storage.objectViewer
    

CloudDemo ランナー アカウントを構成する

これで、CloudDemo ランナー アカウント(CloudDemo サービスのランタイム サービス アカウント)を構成できるようになりました。

  • CloudDemo-runner という名前のサービス アカウントを作成します。

    gcloud iam service-accounts create clouddemo-runner \
        --display-name="CloudDemo Runner" \
        --project=$DEV_PROJECT_ID
    
    gcloud iam service-accounts create clouddemo-runner \
        --display-name="CloudDemo Runner" \
        --project=$PROD_PROJECT_ID
    
    DEV_CLOUDDEMO_RUNNER=clouddemo-runner@$DEV_PROJECT_ID.iam.gserviceaccount.com
    
    PROD_CLOUDDEMO_RUNNER=clouddemo-runner@$PROD_PROJECT_ID.iam.gserviceaccount.com
    

Azure Pipelines Deployer アカウントを構成する

最後に、Azure リリース パイプラインが Cloud Run へのデプロイに使用する Azure Pipelines Deployer アカウントの作成と構成を行います。

  1. azure-pipelines-deployer という名前のサービス アカウントを作成します。

    gcloud iam service-accounts create azure-pipelines-deployer \
        --display-name="Azure Pipelines Deployer" \
        --project=$PROD_PROJECT_ID
    
    AZURE_PIPELINES_DEPLOYER=azure-pipelines-deployer@$PROD_PROJECT_ID.iam.gserviceaccount.com
    
  2. 必要な IAM ロールを割り当てて、新しい Cloud Run サービスまたはリビジョンを開発プロジェクトにデプロイします。

    gcloud projects add-iam-policy-binding $DEV_PROJECT_ID \
        --member serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role roles/run.admin
    
    gcloud iam service-accounts add-iam-policy-binding \
        $DEV_CLOUDDEMO_RUNNER \
        --member=serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role="roles/iam.serviceAccountUser" \
        --project=$DEV_PROJECT_ID
    
  3. 本番環境プロジェクトに同じ一連のロールを割り当てます。

    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role roles/run.admin
    
    gcloud iam service-accounts add-iam-policy-binding \
        $PROD_CLOUDDEMO_RUNNER \
        --member=serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role="roles/iam.serviceAccountUser" \
        --project=$PROD_PROJECT_ID
    
  4. サービス アカウント キーを生成します。

    gcloud iam service-accounts keys create azure-pipelines-deployer.json \
        --iam-account=$AZURE_PIPELINES_DEPLOYER \
        --project=$PROD_PROJECT_ID
    
    cat azure-pipelines-deployer.json | base64 -w 0
    

    このコマンドの出力は、リリース パイプラインを構成するときに使用します。

リリース パイプラインを構成する

この段階で、Azure Pipelines に戻ってデプロイを自動化できます。デプロイには次の手順が含まれます。

  • 開発環境にデプロイする。
  • 本番環境へのデプロイを開始する前に、手動承認をリクエストする。
  • 本番環境にデプロイする。

リリース定義を作成する

まず、リリース定義を作成します。

  1. Azure DevOps のメニューで、[Pipelines] > [Releases] の順に選択します。
  2. [New pipeline] をクリックします。
  3. テンプレートのリストから [Empty job] を選択します。
  4. ステージの名前の入力を求められたら、「Development」と入力します。
  5. 画面の上部で、パイプラインに CloudDemo という名前を付けます。
  6. パイプライン図で、[Artifacts] の横にある [Add] をクリックします。
  7. [Build] を選択して、次の設定を追加します。
    • Source type: ビルド
    • Source (build pipeline): ビルド定義を選択します(選択肢は 1 つだけです)
    • Default version: Latest
    • Source alias: build
  8. [Add] をクリックします。
  9. [Artifact] ボックスで [Continuous deployment trigger](稲妻のアイコン)をクリックしてデプロイ トリガーを追加します。
  10. [Continuous deployment trigger] で、スイッチを [Enabled] に設定します。
  11. [Save] をクリックします。
  12. 必要に応じてコメントを入力し、[OK] をクリックして確定します。

    パイプラインは次のようになります。

    自動デプロイ設定のパイプライン ビュー。

開発プロジェクトにデプロイする

リリース定義を作成したら、開発プロジェクトへの Cloud Run デプロイを構成できるようになります。

  1. メニューで [Agent job] タブに切り替えます。
  2. [Agent job] をクリックします。
  3. エージェントの仕様を [ubuntu-18.04] に設定します。
  4. [Agent job] の横の [Add a task to agent job] をクリックして、フェーズにステップを追加します。
  5. [Command line] タスクを選択し、[Add] をクリックします。
  6. 新たに追加したタスクをクリックし、以下の設定を構成します。

    1. Display name: Deploy image to development project
    2. Script:

      gcloud auth activate-service-account \
          --quiet \
          --key-file <(echo $(ServiceAccountKey) | base64 -d) && \
      gcloud run deploy clouddemo \
          --quiet \
          --service-account=clouddemo-runner@$(CloudRun.ProjectId.Development).iam.gserviceaccount.com \
          --allow-unauthenticated \
          --image=gcr.io/$(ContainerRegistry.ProjectId)/clouddemo:$BUILD_BUILDID \
          --platform=managed \
          --region=$(CloudRun.Region) \
          --project=$(CloudRun.ProjectId.Development)
      

      このコマンドは、環境変数からサービス アカウント キーを取得し、gcloud CLI を使用してアプリケーションを Cloud Run にデプロイします。デフォルトでは、Azure Pipelines エージェントで gcloud CLI を使用できます。

  7. [変数] タブに切り替えて、次の変数を追加します。

    Name Value Secret
    ServiceAccountKey 前に azure-pipelines-deployer 用に作成されたサービス アカウント キー。
    ContainerRegistry.ProjectId 本番環境プロジェクトのプロジェクト ID。
    CloudRun.Region Cloud Run リソースをデプロイする前に選択したリージョン。
    CloudRun.ProjectId.Development 開発プロジェクトのプロジェクト ID。
    CloudRun.ProjectId.Production 本番環境プロジェクトのプロジェクト ID。
  8. [Save] をクリックします。

  9. 必要に応じてコメントを入力し、[OK] をクリックして確定します。

本番環境クラスタにデプロイする

最後に、本番環境プロジェクトへのデプロイを構成します。

  1. メニューで [Pipeline] タブに切り替えます。
  2. [Stages] ボックスで、[Add] > [New stage] の順に選択します。
  3. テンプレートのリストから [Empty job] を選択します。
  4. ステージの名前の入力を求められたら、「Production」と入力します。
  5. 新たに作成したステージの稲妻のアイコンをクリックします。
  6. 以下の設定を構成します。

    1. Select trigger: After stage
    2. Stages: Development
    3. Pre-deployment approvals: (有効)
    4. Approvers: ユーザー名を選択します。

    パイプラインに次のようなビューが表示されます。

    クラスタ デプロイ設定のパイプライン ビュー。

  7. [Tasks] タブに切り替えます。

  8. [Tasks] タブにカーソルを合わせ、[Tasks] > [Production] の順に選択します。

  9. [Agent job] をクリックします。

  10. エージェントの仕様を [ubuntu-18.04] に設定します。

  11. [Add a task to agent job] をクリックして、フェーズにステップを追加します。

  12. [Command line] タスクを選択し、[Add] をクリックします。

  13. 新たに追加したタスクをクリックし、以下の設定を構成します。

    1. Display name: Deploy image to production project
    2. Script:

      gcloud auth activate-service-account \
          --quiet \
          --key-file <(echo $(ServiceAccountKey) | base64 -d) && \
      gcloud run deploy clouddemo \
          --quiet \
          --service-account=clouddemo-runner@$(CloudRun.ProjectId.Production).iam.gserviceaccount.com \
          --allow-unauthenticated \
          --image=gcr.io/$(ContainerRegistry.ProjectId)/clouddemo:$BUILD_BUILDID \
          --platform=managed \
          --region=$(CloudRun.Region) \
          --project=$(CloudRun.ProjectId.Production)
      
  14. [Save] をクリックします。

  15. 必要に応じてコメントを入力し、[OK] をクリックして確定します。

パイプラインを実行する

パイプライン全体の構成が済んだら、ソースコードを変更してパイプラインをテストできます。

  1. ローカルのパソコンで、先ほどクローンを作成した Git リポジトリからファイル applications\clouddemo\netcore\CloudDemo.MvcCore\Views\Home\Index.cshtml を開きます。
  2. 26 行目で、ViewBag.Title の値を Home Page から Home Page Cloud Run に変更します。
  3. 変更を commit し、Azure Pipelines に push します。

    Visual Studio

    1. チーム エクスプローラーを開き、[Home] アイコンをクリックします。
    2. [変更] をクリックします。
    3. Change site title」といった Commit メッセージを入力します。
    4. [すべてをコミットしてプッシュ] をクリックします。

    コマンドライン

    1. 変更されたすべてのファイルをステージングします。

      git add -A
      
    2. ローカル リポジトリへの変更を commit します。

      git commit -m "Change site title"
      
    3. 変更を Azure Pipelines に push します。

      git push
      
  4. Azure DevOps のメニューで [Pipelines] を選択します。ビルドがトリガーされます。

  5. ビルドが完了したら、[Pipelines] > [Releases] の順に選択します。リリース プロセスが開始されます。

  6. [Release-1] をクリックして詳細ページを開き、Development ステージのステータスが [Succeeded] に切り替わるのを待ちます。

  7. Google Cloud コンソールで、開発プロジェクトに切り替えます。

  8. メニューで、[Compute] > [Cloud Run] の順に選択します。

    clouddemo サービスが正常にデプロイされます。

    Cloud Run のデプロイ ステータス。

  9. clouddemo をクリックして詳細を表示します。

    Cloud Run がサービスをプロビジョニングしたことを示す URL が表示されます。

  10. 新しいブラウザタブで URL を開き、CloudDemo アプリがデプロイされ、カスタム タイトルが使用されていることを確認します。

  11. Azure Pipelines で [Approve]([Production] ステージに隣接している)をクリックして、本番環境へのデプロイをプロモートします。

  12. (省略可)コメントを入力します。

  13. [Approve] をクリックして確定し、Production環境のステータスが [Succeeded] に切り替わるのを待ちます。

  14. Google Cloud コンソールで、本番環境プロジェクトに切り替えます。

  15. メニューで、[Compute] > [Cloud Run] の順に選択します。

    clouddemo サービスが本番環境プロジェクトにデプロイされます。

  16. clouddemo をクリックして詳細を表示します。

    Cloud Run によってサービスがプロビジョニングされたことを示す URL が表示されます。

  17. 新しいブラウザタブで URL を開き、CloudDemo アプリが本番環境にデプロイされ、カスタム タイトルが使用されていることを確認します。

クリーンアップ

このチュートリアルの完了後に請求が発生しないようにするには、作成したエンティティを削除します。

Azure Pipelines プロジェクトの削除

Azure Pipelines プロジェクトを削除するには、Azure DevOps Services のドキュメントをご覧ください。Azure Pipelines プロジェクトを削除すると、すべてのソースコードの変更が失われます。

Google Cloud の開発プロジェクトと本番環境プロジェクトを削除する

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ