이 가이드에서는 Azure Pipelines, Cloud Run, Container Registry를 사용하여 ASP.NET MVC Core 웹 애플리케이션을 위해 지속적 통합/지속적 배포(CI/CD) 파이프라인을 만드는 방법을 보여줍니다.
CI/CD 파이프라인은 다음 다이어그램과 같이 두 개의 Google Cloud 프로젝트(개발용 및 프로덕션용)를 사용합니다.
파이프라인 시작 부분에서 개발자는 예시 코드베이스에 대한 변경사항을 커밋합니다. 이 작업은 파이프라인을 트리거하여 출시를 만들고 개발 클러스터의 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 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.
Azure DevOps 사용 시 부과될 수 있는 요금은 Azure DevOps 가격 책정 페이지를 참조하세요.
시작하기 전에
이 가이드에서는 개발용과 프로덕션용 하나씩 별도의 프로젝트 두 개를 사용합니다. 별도의 프로젝트를 사용하면 프로덕션에 배포하기 전에 출시를 테스트하면서 Identity and Access Management(IAM) 역할 및 권한을 개별적으로 관리할 수 있습니다.
- 개발용 Google Cloud 프로젝트를 만듭니다. 이 가이드에서는 이 프로젝트를 개발 프로젝트라고 합니다.
- 프로덕션용 Google Cloud 프로젝트를 만듭니다. 이 가이드에서는 이 프로젝트를 프로덕션 프로젝트라고 합니다.
- Azure DevOps 계정과 관리자 액세스 권한이 있어야 합니다. 아직 Azure DevOps 계정이 없는 경우 Azure DevOps 홈페이지에서 가입하면 됩니다.
Azure DevOps 프로젝트 만들기
Azure DevOps를 사용하여 소스 코드를 관리하고, 빌드 및 테스트를 실행하고, Cloud Run으로의 배포를 조정합니다. 시작하려면 Azure DevOps 계정에서 새 프로젝트를 만듭니다.
- Azure DevOps 홈페이지(https://dev.azure.com/YOUR_AZURE_DEVOPS_ACCOUNT_NAME)로 이동합니다.
- 새 프로젝트를 클릭합니다.
- 프로젝트 이름을 입력합니다(예:
CloudDemo
). - Visibility(표시 유형)를 Private(비공개)로 설정하고 Create project(프로젝트 만들기)를 클릭합니다.
- 프로젝트를 만든 후 왼쪽 메뉴에서 저장소를 클릭합니다.
- 가져오기를 클릭하여 GitHub에서
dotnet-docs-samples
저장소를 포크한 후 다음 값을 설정합니다.- 저장소 유형:
Git
- 클론 URL:
https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
- 저장소 유형:
가져오기를 클릭합니다.
가져오기 프로세스가 완료되면
dotnet-docs-samples
저장소의 소스 코드가 표시됩니다.
Container Registry에 Azure Pipelines 연결
CloudDemo
앱에 대해 지속적 통합을 설정하려면 먼저 Azure Pipelines를 Container Registry에 연결해야 합니다. 이 연결을 통해 Azure Pipelines가 컨테이너 이미지를 Container Registry에 게시할 수 있습니다.
이미지 게시를 위한 서비스 계정 설정
프로덕션 프로젝트에서 Google Cloud 서비스 계정을 만듭니다.
- Google Cloud Console에서 프로덕션 프로젝트로 전환합니다.
-
In the Google Cloud console, activate Cloud Shell.
다음 환경 변수를 초기화합니다.
DEV_PROJECT_ID=DEV_PROJECT_ID PROD_PROJECT_ID=PROD_PROJECT_ID
다음을 바꿉니다.
DEV_PROJECT_ID
: 개발 프로젝트의 프로젝트 IDPROD_PROJECT_ID
: 프로덕션 프로젝트의 프로젝트 ID
프로덕션 프로젝트에서 Container Registry API를 사용 설정합니다.
gcloud services enable containerregistry.googleapis.com \ --project=$PROD_PROJECT_ID
Azure Pipelines가 Docker 이미지를 게시하는 데 사용하는 서비스 계정을 만듭니다.
gcloud iam service-accounts create azure-pipelines-publisher \ --display-name="Azure Pipelines Publisher" \ --project=$PROD_PROJECT_ID
서비스 계정에 스토리지 관리자 IAM 역할(
roles/storage.admin
)을 부여하여 Azure Pipelines가 Container Registry로 푸시할 수 있도록 합니다.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
서비스 계정 키를 생성합니다.
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
서비스 계정 키 파일의 콘텐츠를 확인합니다.
echo $(<azure-pipelines-publisher-oneline.json)
다음 단계 중 하나에서 서비스 계정 키가 필요합니다.
Container Registry에 대해 서비스 연결 만들기
Azure Pipelines에서 Container Registry에 대해 새 서비스 연결을 만듭니다.
- Azure DevOps 메뉴에서 프로젝트 설정를 선택한 다음 파이프라인 > 서비스 연결을 선택합니다.
- 서비스 연결 만들기를 클릭합니다.
- 목록에서 Docker 레지스트리를 선택하고 다음을 클릭합니다.
- 대화상자에서 다음 필드의 값을 입력합니다.
- 레지스트리 유형: Others
- Docker 레지스트리:
https://gcr.io/PROD_PROJECT_ID
(PROD_PROJECT_ID
를https://gcr.io/azure-pipelines-test-project-12345
와 같이 프로덕션 프로젝트 이름으로 바꿉니다). - Docker ID:
_json_key
- 비밀번호:
azure-pipelines-publisher-oneline.json
의 콘텐츠를 붙여 넣습니다. - 서비스 연결 이름:
gcr-tutorial
- 저장을 클릭하여 연결을 만듭니다.
지속적으로 빌드
이제 Azure Pipelines를 사용하여 지속적 통합을 설정할 수 있습니다. Azure Pipelines는 Git 저장소로 커밋이 푸시될 때마다 코드를 빌드하고 빌드 아티팩트를 Docker 컨테이너로 패키징합니다. 그러면 컨테이너가 Container Registry에 게시됩니다.
저장소에 이미 다음 Dockerfile이 포함됩니다.
이제 YAML 구문을 사용하는 새 파이프라인을 만듭니다.
- Visual Studio 또는 명령줄
git
클라이언트를 사용하여 새 Git 저장소를 클론합니다. - 저장소 루트에서
azure-pipelines.yml
이라는 파일을 만듭니다. 다음 코드를 파일에 복사합니다.
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 기반 빌드 에이전트가 사용됩니다.
모든 변경사항을 커밋하고 Azure Pipelines로 푸시합니다.
Visual Studio
- 팀 탐색기를 열고 홈 아이콘을 클릭합니다.
- Changes(변경사항)를 클릭합니다.
Add pipeline definition
과 같은 커밋 메시지를 입력합니다.- 모두 커밋 후 푸시를 클릭합니다.
명령줄
수정된 모든 파일을 스테이징합니다.
git add -A
로컬 저장소에 대한 변경사항을 커밋합니다.
git commit -m "Add pipeline definition"
Azure DevOps에 변경사항을 푸시합니다.
git push
Azure DevOps 메뉴에서 파이프라인를 선택한 후 파이프라인 만들기를 클릭합니다.
Azure 저장소 Git를 선택합니다.
저장소를 선택합니다.
파이프라인 YAML 검토 페이지에서 실행을 클릭합니다.
새 빌드가 트리거됩니다. 빌드가 완료되려면 2분 정도 걸릴 수 있습니다.
이미지가 Container Registry에 게시되었는지 확인하려면 Cloud Console에서 프로덕션 프로젝트로 전환하고 Container Registry > 이미지를 선택한 후 CloudDemo를 클릭합니다.
단일 이미지와 이 이미지의 태그가 표시됩니다. 이 태그는 Azure Pipelines에서 실행된 빌드의 숫자 ID에 해당합니다.
지속적으로 배포
이제 커밋할 때마다 Azure Pipelines가 자동으로 코드를 빌드하고 Docker 이미지를 게시하므로 개발자는 배포 작업에만 집중할 수 있습니다.
다른 지속적 통합 시스템과 달리 Azure Pipelines는 빌드와 배포를 구분하며, 배포와 관련된 모든 태스크에 출시 관리라는 특수 도구 세트를 제공합니다.
Azure Pipelines 출시 관리는 다음과 같은 개념을 바탕으로 합니다.
- 출시는 앱의 특정 버전을 구성하고 일반적으로 빌드 프로세스의 결과인 아티팩트 집합을 의미합니다.
- 배포는 출시를 가져와서 특정 환경에 배포하는 프로세스를 의미합니다.
- 배포는 작업으로 그룹화할 수 있는 일련의 태스크를 수행합니다.
- 스테이지를 사용하여 파이프라인을 세분화하고 개발 및 테스트 환경과 같은 여러 환경으로의 배포를 조정할 수 있습니다.
새 빌드가 완료될 때마다 출시 파이프라인이 트리거되도록 설정합니다. 파이프라인은 개발과 프로덕션이라는 두 스테이지로 구성됩니다. 각 스테이지에서 출시 파이프라인은 빌드 파이프라인이 생성하는 Docker 이미지를 사용한 다음 이를 Cloud Run에 배포합니다.
이전에 구성한 빌드 파이프라인은 각 Docker 이미지를 빌드 ID로 태그 지정한 다음 Container Registry에 게시합니다. 따라서 출시 파이프라인에서 $BUILD_BUILDID
변수를 사용하여 배포할 올바른 Docker 이미지를 식별합니다.
Cloud Run 구성
Cloud Run은 완전 관리형 서버리스 환경이므로 인프라를 프로비저닝할 필요가 없습니다. Cloud Run 배포를 안전하게 보호하려면 IAM을 설정해야 합니다.
다음 다이어그램과 같이 Cloud Run 서비스를 배포하고 실행하려면 여러 ID가 필요합니다.
이러한 각 ID는 서비스 계정으로 구현되며, 다음 테이블에 설명된 대로 특정 용도에 사용됩니다.
서비스 계정 | 사용 주체 | 용도 | 필요 역할 |
---|---|---|---|
Azure Pipelines 게시자 | 빌드 파이프라인 | Container Registry에 Docker 이미지 게시 | roles/storage.admin (프로덕션 프로젝트만 해당) |
Azure Pipelines 배포자 | 출시 파이프라인 | Cloud Run 배포 시작 | roles/run.admin |
CloudDemo 서비스 실행 | roles/iam.serviceAccountUser |
||
Cloud Run 서비스 에이전트 | Cloud Run | Container Registry에서 Docker 이미지 가져오기 | roles/storage.objectViewer (프로덕션 프로젝트만 해당) |
CloudDemo 실행기(런타임 서비스 계정) | CloudDemo 서비스 | Google Cloud의 리소스에 액세스 | 없음 |
Azure Pipelines 게시자 서비스 계정을 만들고 구성했습니다. 다음 섹션에서는 나머지 서비스 계정을 만들고 구성합니다.
Cloud Run 서비스 계정 구성
Cloud Shell 열기
다음 환경 변수를 초기화합니다.
DEV_PROJECT_ID=DEV_PROJECT_ID PROD_PROJECT_ID=PROD_PROJECT_ID
다음을 바꿉니다.
DEV_PROJECT_ID
: 개발 프로젝트의 프로젝트 IDPROD_PROJECT_ID
: 프로덕션 프로젝트의 프로젝트 ID
개발 프로젝트와 프로덕션 프로젝트 모두에서 Cloud Run 및 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 서비스 에이전트 계정이 생성됩니다.
Docker 이미지가 저장된 프로덕션 프로젝트에서 두 개의 Cloud Run 서비스 에이전트 계정에 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 배포자 계정 구성
마지막으로 Azure 출시 파이프라인이 Cloud Run에 배포하는 데 사용하는 Azure Pipelines 배포자 계정을 만들고 구성합니다.
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
필요한 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
프로덕션 프로젝트에 동일한 역할 집합을 할당합니다.
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
서비스 계정 키를 생성합니다.
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로 돌아가 배포를 자동화할 수 있습니다. 여기에는 다음 단계가 포함됩니다.
- 개발 환경에 배포
- 프로덕션 환경에 배포를 시작하기 전에 수동 승인 요청
- 프로덕션 환경에 배포
출시 정의 만들기
먼저 출시 정의를 만듭니다.
- Azure DevOps 메뉴에서 Pipelines(파이프라인) > Releases(출시)를 선택합니다.
- 새 파이프라인을 클릭합니다.
- 템플릿 목록에서 빈 작업을 선택합니다.
- 스테이지 이름을 입력하라는 메시지가 표시되면
Development
를 입력합니다. - 화면 상단에서 파이프라인 이름을
CloudDemo
로 지정합니다. - 파이프라인 다이어그램의 아티팩트 옆에서 추가를 클릭합니다.
- 빌드를 선택한 후 다음 설정을 추가합니다.
- Source type(소스 유형): Build(빌드)
- 소스(빌드 파이프라인): 빌드 정의를 선택합니다. 옵션이 하나뿐이어야 합니다.
- Default version(기본 버전): 최신
- 소스 별칭:
build
- 추가를 클릭합니다.
- Artifact(아티팩트) 상자에서 Continuous deployment trigger(지속적 배포 트리거)(번개 아이콘)를 클릭하여 배포 트리거를 추가합니다.
- Continuous deployment trigger(지속적 배포 트리거)에서 스위치를 Enabled(사용 설정됨)로 설정합니다.
- Save(저장)를 클릭합니다.
원하는 경우 설명을 입력한 다음 확인을 클릭하여 확인합니다.
파이프라인은 다음과 비슷하게 표시됩니다.
개발 프로젝트에 배포
출시 정의를 만들었으면 이제 개발 프로젝트에 대한 Cloud Run 배포를 구성할 수 있습니다.
- 메뉴에서 태스크 탭으로 전환합니다.
- 에이전트 작업을 클릭합니다.
- Agent specification(에이전트 사양)을 ubuntu-18.04로 설정합니다.
- Agent job(에이전트 작업) 옆의 Add a task to agent job(에이전트 작업에 태스크 추가) 을 클릭하여 단계(phase)에 단계를 추가합니다.
- Command line(명령줄) 태스크를 선택하고 Add(추가)를 클릭합니다.
새로 추가된 태스크를 클릭하고 다음 설정을 구성합니다.
- 표시 이름:
Deploy image to development project
스크립트:
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에 배포합니다. gcloud CLI는 기본적으로 Azure Pipelines 에이전트에서 사용할 수 있습니다.
- 표시 이름:
변수 탭으로 전환하고 다음 변수를 추가합니다.
이름 값 보안 비밀 ServiceAccountKey
이전에 azure-pipelines-deployer
에 대해 생성된 서비스 계정 키.예 ContainerRegistry.ProjectId
프로덕션 프로젝트의 프로젝트 ID. CloudRun.Region
Cloud Run 리소스를 배포할 이전에 선택한 리전. CloudRun.ProjectId.Development
개발 프로젝트의 프로젝트 ID. CloudRun.ProjectId.Production
프로덕션 프로젝트의 프로젝트 ID. 저장을 클릭합니다.
원하는 경우 설명을 입력한 다음 확인을 클릭하여 확인합니다.
프로덕션 클러스터에 배포
마지막으로 프로덕션 프로젝트에 대한 배포를 구성합니다.
- 메뉴에서 파이프라인 탭으로 전환합니다.
- 스테이지 상자에서 Add(추가) > New stage(새 스테이지)를 선택합니다.
- 템플릿 목록에서 빈 작업을 선택합니다.
- 스테이지 이름을 입력하라는 메시지가 표시되면
Production
를 입력합니다. - 새로 만든 스테이지의 번개 아이콘을 클릭합니다.
다음 설정을 구성합니다.
- Select trigger(트리거 선택): After stage
- Stages(스테이지): Development(개발)
- 사전 배포 승인: (사용 설정됨)
- 승인 담당자: 사용자 이름을 선택합니다.
파이프라인은 다음과 비슷한 뷰를 표시합니다.
태스크 탭으로 전환합니다.
Tasks(태스크) 탭 위로 마우스를 가져가 Tasks(태스크) > Production(프로덕션)을 선택합니다.
에이전트 작업을 클릭합니다.
Agent specification(에이전트 사양)을 ubuntu-18.04로 설정합니다.
에이전트 작업에 태스크 추가
을 클릭하여 단계(phase)에 단계를 추가합니다.Command line(명령줄) 태스크를 선택한 다음 Add(추가)를 클릭합니다.
새로 추가된 태스크를 클릭하고 다음 설정을 구성합니다.
- 표시 이름:
Deploy image to production project
스크립트:
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)
- 표시 이름:
저장을 클릭합니다.
원하는 경우 설명을 입력한 다음 확인을 클릭하여 확인합니다.
파이프라인 실행
이제 전체 파이프라인을 구성했으므로 소스 코드 변경을 수행하여 파이프라인을 테스트할 수 있습니다.
- 로컬 컴퓨터에서 이전에 클론한 Git 저장소의
applications\clouddemo\netcore\CloudDemo.MvcCore\Views\Home\Index.cshtml
파일을 엽니다. - 26행에서
ViewBag.Title
값을Home Page
에서Home Page Cloud Run
으로 변경합니다. 변경사항을 커밋한 다음 Azure Pipelines로 푸시합니다.
Visual Studio
- 팀 탐색기를 열고 홈 아이콘을 클릭합니다.
- Changes(변경사항)를 클릭합니다.
Change site title
과 같은 커밋 메시지를 입력합니다.- 모두 커밋 후 푸시를 클릭합니다.
명령줄
수정된 모든 파일을 스테이징합니다.
git add -A
로컬 저장소에 대한 변경사항을 커밋합니다.
git commit -m "Change site title"
변경사항을 Azure Pipelines로 푸시합니다.
git push
Azure DevOps 메뉴에서 파이프라인을 선택합니다. 빌드가 트리거됩니다.
빌드가 완료되면 Pipelines(파이프라인) > Releases(출시)를 선택합니다. 출시 프로세스가 시작됩니다.
Release-1을 클릭하여 세부정보 페이지를 열고 Development(개발) 스테이지의 상태가 Succeeded(성공)로 전환될 때까지 기다립니다.
Google Cloud Console에서 개발 프로젝트로 전환합니다.
메뉴에서 Compute(컴퓨팅) > Cloud Run을 선택합니다.
clouddemo 서비스가 성공적으로 배포되었습니다.
자세한 내용을 보려면 clouddemo를 클릭합니다.
Cloud Run이 서비스를 프로비저닝했음을 보여주는 URL이 표시됩니다.
새 브라우저 탭에서 URL을 열어 CloudDemo 앱이 배포되었고 커스텀 제목을 사용하는지 확인합니다.
Azure Pipelines에서 Production(프로덕션) 스테이지에 인접한 Approve(승인)를 클릭하여 배포를 프로덕션 환경으로 승격합니다.
(선택사항) 설명을 입력합니다.
Approve(승인)를 클릭하여 확인하고 Production(프로덕션) 환경의 상태가 Succeeded(성공)로 전환될 때까지 기다립니다.
Google Cloud Console에서 프로덕션 프로젝트로 전환합니다.
메뉴에서 Compute(컴퓨팅) > Cloud Run을 선택합니다.
clouddemo 서비스가 프로덕션 프로젝트에 배포됩니다.
자세한 내용을 보려면 clouddemo를 클릭합니다.
Cloud Run이 서비스를 프로비저닝했음을 보여주는 URL이 표시됩니다.
새 브라우저 탭에서 URL을 열어 CloudDemo 앱이 프로덕션에 배포되었고 커스텀 제목을 사용하는지 확인합니다.
정리
이 튜토리얼을 완료한 후에 추가 비용이 발생하지 않도록 하려면 만든 항목을 삭제하세요.
Azure Pipelines 프로젝트 삭제
Azure Pipelines 프로젝트를 삭제하려면 Azure DevOps 서비스 문서를 참조하세요. Azure Pipelines 프로젝트를 삭제하면 모든 소스 코드 변경사항도 손실됩니다.
Google Cloud 개발 및 프로덕션 프로젝트 삭제
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
다음 단계
- Cloud Run 서비스의 커스텀 도메인 구성
- Azure Pipelines를 사용하여 Google Kubernetes Engine에 동일한 앱을 배포하는 방법 알아보기
- Google Cloud에 .NET 앱 배포에 대해 자세히 알아봅니다.
- Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항을 살펴봅니다. Cloud 아키텍처 센터 살펴보기