In dieser Anleitung erfahren Sie, wie Sie Azure Pipelines, Cloud Run und Container Registry verwenden, um eine CI/CD-Pipeline (Continuous Integration/Continuous Deployment) für eine Webanwendung von ASP.NET MVC Core zu erstellen.
Die CI/CD-Pipeline verwendet zwei Cloud de Confiance Projekte, eines für die Entwicklung und eines für die Produktion, wie das folgende Diagramm zeigt.
Am Anfang der Pipeline nehmen Entwickler Änderungen an der Beispielcodebasis vor. Diese Aktion veranlasst die Pipeline dazu, einen Release zu erstellen und im Entwicklungscluster in Cloud Run bereitzustellen. Ein Releasemanager stellt dann den Release hoch, sodass er im Produktionsprojekt bereitgestellt wird.
Diese Anleitung richtet sich an Entwickler und DevOps-Entwickler. Dabei werden Grundkenntnisse in .NET, Azure Pipelines, Cloud Run und git vorausgesetzt. Für diese Anleitung benötigen Sie Administratorzugriff auf ein Azure DevOps-Konto.
Ziele
- Verbindung von Artifact Registry zu Azure Pipelines für die Veröffentlichung von Docker-Images herstellen
- .NET-Beispielanwendung für das Deployment in Cloud Run vorbereiten
- Authentifizierung zwischen Azure Pipelines und Cloud de Confiance by S3NSeinrichten
- Releaseverwaltung von Azure Pipelines zur Orchestrierung von Cloud Run-Deployments verwenden
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Cloud de Confiance by S3NS:
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Auf der Azure DevOps-Preisseite finden Sie alle Gebühren, die bei der Verwendung von Azure DevOps anfallen können.
Hinweis
In dieser Anleitung verwenden Sie zwei separate Projekte, eines für die Entwicklung und eines für die Produktion. Wenn Sie separate Projekte verwenden, können Sie Releases testen, bevor Sie sie in der Produktion bereitstellen. Außerdem können Sie IAM-Rollen (Identity and Access Management) und -Berechtigungen einzeln verwalten.
- Erstellen Sie ein Cloud de Confiance -Projekt für die Entwicklung. In der Anleitung wird dieses Projekt als Entwicklungsprojekt bezeichnet.
- Erstellen Sie ein Cloud de Confiance -Projekt für die Produktion. In der Anleitung wird dieses Projekt als Produktionsprojekt bezeichnet.
-
Prüfen Sie, ob für Ihr Cloud de Confiance Projekt die Abrechnung aktiviert ist.
- Sie brauchen ein Azure DevOps-Konto mit Administratorzugriff. Wenn Sie noch kein Azure DevOps-Konto haben, können Sie sich auf der Azure DevOps-Startseite registrieren.
Azure DevOps-Projekt erstellen
Sie verwenden Azure DevOps, um den Quellcode zu verwalten, Builds und Tests auszuführen und die Bereitstellung in Cloud Run zu orchestrieren. Erstellen Sie zuerst in Ihrem Azure DevOps-Konto ein Projekt.
- Rufen Sie die Azure DevOps-Startseite (https://dev.azure.com/YOUR_AZURE_DEVOPS_ACCOUNT_NAME) auf.
- Klicken Sie auf Neues Projekt.
- Geben Sie einen Projektnamen ein, z. B.
CloudDemo. - Legen Sie Visibility (Sichtbarkeit) auf Private (Privat) fest und klicken Sie dann auf Create project (Projekt erstellen).
- Nachdem Sie das Projekt erstellt haben, klicken Sie im Menü links auf Repositories.
- Klicken Sie auf Importieren, um das
dotnet-docs-samples-Repository von GitHub abzuzweigen, und legen Sie dann die folgenden Werte fest:- Repository-Typ:
Git - Klon-URL:
https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
- Repository-Typ:
Klicken Sie auf Importieren.
Wenn der Importvorgang abgeschlossen ist, wird der Quellcode des Repositorys
dotnet-docs-samplesangezeigt.
Azure Pipelines mit Artifact Registry verbinden
Bevor Sie die kontinuierliche Integration für die CloudDemo-App einrichten können, müssen Sie Azure Pipelines mit Artifact Registry verbinden. Über diese Verbindung kann Azure Pipelines Container-Images in Artifact Registry veröffentlichen.
Dienstkonto für die Veröffentlichung von Images einrichten
Erstellen Sie ein Cloud de Confiance -Dienstkonto in Ihrem Produktionsprojekt:
- Wechseln Sie in der Cloud de Confiance -Console zum Produktionsprojekt.
-
Aktivieren Sie Cloud Shell in der Cloud de Confiance Console.
Initialisieren Sie die folgenden Umgebungsvariablen:
DEV_PROJECT_ID=DEV_PROJECT_ID PROD_PROJECT_ID=PROD_PROJECT_ID
Ersetzen Sie dabei Folgendes:
DEV_PROJECT_ID: Die Projekt-ID Ihres EntwicklungsprojektsPROD_PROJECT_ID: Die Projekt-ID Ihres Produktionsprojekts
Aktivieren Sie im Produktionsprojekt die Artifact Registry API:
gcloud services enable artifactregistry.googleapis.com \ --project=$PROD_PROJECT_IDErstellen Sie ein Artifact Registry-Repository zum Speichern Ihrer Docker-Images:
gcloud artifacts repositories create docker \ --project=$PROD_PROJECT_ID \ --repository-format=docker \ --location REGIONErsetzen Sie
REGIONdurch die Region Ihres Artifact Registry-Repositorys, z. B.us-central1.Erstellen Sie ein Dienstkonto, das von Azure Pipelines zum Veröffentlichen von Docker-Images verwendet wird:
gcloud iam service-accounts create azure-pipelines-publisher \ --display-name="Azure Pipelines Publisher" \ --project=$PROD_PROJECT_IDWeisen Sie dem Dienstkonto die Rolle „Artifact Registry-Autor“ (
roles/artifactregistry.writer) zu, damit Azure Pipelines per Push in Artifact Registry übertragen kann:AZURE_PIPELINES_PUBLISHER=azure-pipelines-publisher@$PROD_PROJECT_ID.s3ns.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \ --member serviceAccount:$AZURE_PIPELINES_PUBLISHER \ --role roles/artifactregistry.writer \ --project=$PROD_PROJECT_IDGenerieren Sie einen Dienstkontoschlüssel:
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.jsonRufen Sie den Inhalt der Dienstkonto-Schlüsseldatei auf:
echo $(<azure-pipelines-publisher-oneline.json)Sie benötigen den Dienstkontoschlüssel in einem der folgenden Schritte.
Dienstverbindung für Artifact Registry erstellen
Erstellen Sie in Azure Pipelines eine neue Dienstverbindung für Artifact Registry:
- Wählen Sie im Azure DevOps-Menü die Option Projekteinstellungen und dann Pipelines > Service connections aus.
- Klicken Sie auf Dienstverbindung erstellen.
- Wählen Sie in der Liste Docker Registry aus und klicken Sie dann auf Next.
Geben Sie im Dialogfeld Werte für die folgenden Felder ein:
- Registry type (Registry-Typ): Others (Andere).
Docker-Registrierung:
https://REGION-docker.pkg.dev/PROD_PROJECT_ID/docker/Ersetzen Sie Folgendes:
REGION: die Region Ihres Artifact Registry-RepositorysPROD_PROJECT_ID: Der Name Ihres Produktionsprojekts
Docker ID (Docker-ID):
_json_key.Password: Fügen Sie den Inhalt von
azure-pipelines-publisher-oneline.jsonein.Service connection name:
gcr-tutorial.
Klicken Sie auf Save, um die Verbindung herzustellen.
Kontinuierlich erstellen
Sie können jetzt mit Azure Pipelines Continuous Integration einrichten. Für jeden Commit, der an das Git-Repository gesendet wird, erstellt Azure Pipelines den Code und verpackt die Build-Artefakte in einen Docker-Container. Der Container wird dann in Artifact Registry veröffentlicht.
Das Repository enthält bereits das folgende Dockerfile:
Jetzt erstellen Sie eine neue Pipeline, die die YAML-Syntax verwendet:
- Klonen Sie Ihr neues Git-Repository mit Visual Studio oder einem
git-Befehlszeilenclient. - Erstellen Sie im Stammverzeichnis des Repositorys eine Datei mit dem Namen
azure-pipelines.yml. Kopieren Sie den folgenden Code in die Datei:
resources: - repo: self fetchDepth: 1 pool: vmImage: ubuntu-22.04 trigger: - master variables: TargetFramework: 'net6.0' BuildConfiguration: 'Release' DockerImageName: 'PROD_PROJECT_ID/docker/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)'
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Produktionsprojekts und speichern Sie die Datei.Da es sich bei Cloud Run um eine Linux-basierte Umgebung handelt, verwendet die Pipeline Linux-basierte Build-Agents.
Übernehmen Sie die Änderungen und übertragen Sie sie per Push an Azure Pipelines.
Visual Studio
- Öffnen Sie den Team Explorer und klicken Sie auf das Symbol Startseite.
- Klicken Sie auf Änderungen.
- Geben Sie eine Commit-Nachricht wie
Add pipeline definitionein. - Klicken Sie auf Commit für alle und Push.
Befehlszeile
Alle geänderten Dateien bereitstellen:
git add -AÜbernehmen Sie die Änderungen für das lokale Repository:
git commit -m "Add pipeline definition"Übertragen Sie die Änderungen per Push an Azure DevOps:
git push
Wählen Sie im Azure DevOps-Menü Pipelines aus und klicken Sie dann auf Pipeline erstellen.
Wählen Sie Azure Repos Git aus.
Wählen Sie Ihr Repository aus.
Klicken Sie auf der Seite YAML-Pipeline prüfen auf Ausführen.
Ein neuer Build wird ausgelöst. Der Build kann etwa zwei Minuten dauern.
Wechseln Sie zur Überprüfung, ob das Image in Artifact Registry veröffentlicht wurde, zu Ihrem Produktionsprojekt in der Cloud de Confiance Console. Wählen Sie dort Artifact Registry > docker aus und klicken Sie dann auf CloudDemo.
Ein einzelnes Image und dessen Tag werden angezeigt. Das Tag entspricht der numerischen ID des Builds, der in Azure Pipelines ausgeführt wurde.
Kontinuierliches Deployment
Da Azure Pipelines den Code automatisch erstellt und für jedes Commit Docker-Images veröffentlicht werden, können Sie sich nun dem Deployment widmen.
Im Gegensatz zu anderen Systemen für Continuous Integration unterscheidet Azure Pipelines zwischen Builds und Deployments. Daher steht in Azure Pipelines eine Reihe von speziellen Tools unter dem Namen "Releaseverwaltung" zur Verfügung, die für alle Aufgaben in Zusammenhang mit dem Deployment zum Einsatz kommen.
Die Azure Pipelines-Releaseverwaltung basiert auf folgenden Konzepten:
- Ein Release bezieht sich auf eine Reihe von Artefakten, die eine bestimmte Version Ihrer Anwendung ausmachen und normalerweise das Ergebnis eines Build-Prozesses sind.
- Deployment bezieht sich auf das Erstellen eines Releases in einer bestimmten Umgebung.
- Bei einem Deployment werden mehrere Aufgaben ausgeführt, die in Jobs zusammengefasst sein können.
- Mit Phasen können Sie Ihre Pipeline segmentieren und Bereitstellungen in mehreren Umgebungen (z. B. Entwicklungs- und Testumgebungen) orchestrieren.
Sie richten Ihre Releasepipeline so ein, dass sie bei Abschluss eines neuen Builds ausgelöst wird. Die Pipeline besteht aus zwei Phasen: Entwicklung und Produktion. In jeder Phase verwendet die Releasepipeline das von der Build-Pipeline erstellte Docker-Image und stellt es dann in Cloud Run bereit.
Vor der Veröffentlichung in Artifact Registry kennzeichnet die von Ihnen konfigurierte Build-Pipeline jedes Docker-Image mit der Build-ID. Daher ermitteln Sie das richtige Docker-Image für die Bereitstellung in der Releasepipeline mithilfe der Variablen $BUILD_BUILDID.
Cloud Run konfigurieren
Cloud Run ist eine vollständig verwaltete, serverlose Umgebung. Daher brauchen Sie keine Infrastruktur bereitzustellen. Damit die Sicherheit Ihrer Cloud Run-Bereitstellungen gewährleistet ist, müssen Sie IAM einrichten.
Wie das folgende Diagramm zeigt, sind beim Bereitstellen und Ausführen eines Cloud Run-Dienstes mehrere Identitäten involviert.
Jede dieser Identitäten wird als Dienstkonto implementiert und, wie in der folgenden Tabelle beschrieben, für einen bestimmten Zweck verwendet.
| Dienstkonto | Verwendet von | Zweck | Erforderliche Rollen |
|---|---|---|---|
| Azure Pipelines Publisher | Build-Pipeline | Docker-Images in Artifact Registry veröffentlichen | roles/artifactregistry.writer (nur Produktionsprojekt) |
| Azure Pipelines Deployer | Release pipeline | Cloud Run-Bereitstellungen auslösen | roles/run.admin |
| CloudDemo-Dienst starten | roles/iam.serviceAccountUser |
||
| Cloud Run-Dienst-Agent | Cloud Run | Docker-Images aus Artifact Registry abrufen | roles/artifactregistry.reader (nur Produktionsprojekt) |
| CloudDemo-Runner (Laufzeitdienstkonto) | CloudDemo-Dienst | Auf Ressourcen auf Cloud de Confiancezugreifen | Keine |
Sie haben das Dienstkonto Azure Pipelines Publisher erstellt und konfiguriert. In den folgenden Abschnitten erstellen und konfigurieren Sie die verbleibenden Dienstkonten.
Cloud Run-Dienstkonto konfigurieren
Cloud Shell öffnen
Initialisieren Sie die folgenden Umgebungsvariablen:
DEV_PROJECT_ID=DEV_PROJECT_ID PROD_PROJECT_ID=PROD_PROJECT_ID
Ersetzen Sie dabei Folgendes:
DEV_PROJECT_ID: Die Projekt-ID Ihres EntwicklungsprojektsPROD_PROJECT_ID: Die Projekt-ID Ihres Produktionsprojekts
Aktivieren Sie sowohl im Entwicklungs- als auch im Produktionsprojekt die Cloud Run API und die Compute Engine API:
gcloud services enable run.googleapis.com --project=$DEV_PROJECT_ID gcloud services enable run.googleapis.com --project=$PROD_PROJECT_IDWenn Sie diese APIs aktivieren, werden die Cloud Run-Dienst-Agent-Konten in Ihren Projekten erstellt.
Gewähren Sie den beiden Cloud Run-Dienst-Agent-Konten in dem Produktionsprojekt, in dem Ihre Docker-Images gespeichert sind, Zugriff auf Artifact 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.s3ns-system.iam.gserviceaccount.com \ --role roles/artifactregistry.reader gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \ --member=serviceAccount:service-$PROD_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com \ --role roles/artifactregistry.reader
CloudDemo-Runner-Konto konfigurieren
Sie können jetzt das CloudDemo-Runner-Konto konfigurieren. Dabei handelt es sich um ein benutzerdefiniertes Laufzeitdienstkonto für den CloudDemo-Dienst:
Erstellen Sie ein Dienstkonto mit dem Namen
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.s3ns.iam.gserviceaccount.com PROD_CLOUDDEMO_RUNNER=clouddemo-runner@$PROD_PROJECT_ID.s3ns.iam.gserviceaccount.com
Azure Pipelines Deployer-Konto konfigurieren
Erstellen und konfigurieren Sie schließlich das Azure Pipelines Deployer-Konto, das die Azure-Releasepipeline für die Bereitstellung in Cloud Run verwendet.
Erstellen Sie ein Dienstkonto mit dem Namen
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.s3ns.iam.gserviceaccount.comWeisen Sie die erforderlichen IAM-Rollen zu, um neue Cloud Run-Dienste oder -Überarbeitungen im Entwicklungsprojekt bereitzustellen:
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_IDWeisen Sie dem Produktionsprojekt dieselben Rollen zu:
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_IDGenerieren Sie einen Dienstkontoschlüssel:
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 0Sie verwenden die Ausgabe dieses Befehls, wenn Sie die Releasepipeline konfigurieren.
Release-Pipeline konfigurieren
Sie können jetzt zu Azure Pipelines zurückkehren, um die Bereitstellung zu automatisieren. Die folgenden Schritte sind dafür nötig:
- In der Entwicklungsumgebung bereitstellen
- Anfordern der manuellen Genehmigung, bevor das Deployment in der Produktionsumgebung eingeleitet wird
- In der Produktionsumgebung bereitstellen
Release-Definition erstellen
Erstellen Sie zuerst eine Release-Definition:
- Wählen Sie im Azure DevOps-Menü Pipelines > Releases aus.
- Klicken Sie auf New pipeline.
- Wählen Sie in der Vorlagenliste den Eintrag Empty job aus.
- Wenn Sie einen Namen für die Phase angeben sollen, geben Sie
Developmentein. - Geben Sie der Pipeline oben auf dem Bildschirm den Namen
CloudDemo. - Klicken Sie im Pipelinediagramm neben Artifacts auf Add.
- Wählen Sie Build aus und legen Sie folgende Einstellungen fest:
- Source type: Build.
- Source (build pipeline): Wählen Sie die Build-Definition aus (es sollte nur eine Option vorhanden sein).
- Standardversion: Latest
- Source Alias:
build.
- Klicken Sie auf Add.
- Klicken Sie im Feld Artifact (Artefakt) auf Continuous deployment trigger (Trigger für kontinuierliches Deployment) (das Blitzsymbol), um einen Deployment-Trigger hinzuzufügen.
- Stellen Sie unter Continuous Deployment Trigger den Schieberegler auf Aktiviert ein.
- Klicken Sie auf Speichern.
Geben Sie bei Bedarf einen Kommentar ein und bestätigen Sie mit OK.
Die Pipeline wird in etwa so dargestellt:
Im Entwicklungsprojekt bereitstellen
Mit der erstellten Releasedefinition können Sie nun die Cloud Run-Bereitstellung für das Entwicklungsprojekt konfigurieren.
- Wechseln Sie im Menü zum Tab Tasks.
- Klicken Sie auf Agent Job (Agent-Job).
- Setzen Sie die Agent-Spezifikation auf ubuntu-22.04.
- Klicken Sie neben Agent job (Agent-Job) auf Add a task to agent job (Aufgabe zum Agent-Job hinzufügen) , um der Phase einen Schritt hinzuzufügen.
- Wählen Sie die Aufgabe Befehlszeile aus und klicken Sie auf Hinzufügen.
Klicken Sie auf die neu hinzugefügte Aufgabe und legen Sie die folgenden Einstellungen fest:
- Display name (Anzeigename):
Deploy image to development project. 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).s3ns.iam.gserviceaccount.com \ --allow-unauthenticated \ --image=$(CloudRun.Region)-docker.pkg.dev/$(ContainerRegistry.ProjectId)/docker/clouddemo:$BUILD_BUILDID \ --platform=managed \ --region=$(CloudRun.Region) \ --project=$(CloudRun.ProjectId.Development)Mit diesem Befehl wird ein Dienstkontoschlüssel aus einer Umgebungsvariable abgerufen. Anschließend wird die Anwendung mit der gcloud CLI in Cloud Run bereitgestellt. Die gcloud CLI ist standardmäßig in Azure Pipelines-Agents verfügbar.
- Display name (Anzeigename):
Wechseln Sie zum Tab Variables und fügen Sie folgende Variablen hinzu.
Name Value Secret ServiceAccountKeyDienstkontoschlüssel, der zuvor für azure-pipelines-deployererstellt wurde.Ja ContainerRegistry.ProjectIdProjekt-ID Ihres Produktionsprojekts. CloudRun.RegionRegion, die Sie zuvor ausgewählt haben, um Artifact Registry-Ressourcen bereitzustellen. CloudRun.ProjectId.DevelopmentProjekt-ID Ihres Entwicklungsprojekts. CloudRun.ProjectId.ProductionProjekt-ID Ihres Produktionsprojekts. Klicken Sie auf Save.
Geben Sie bei Bedarf einen Kommentar ein und bestätigen Sie mit OK.
Im Produktionscluster bereitstellen
Abschließend konfigurieren Sie die Bereitstellung für das Produktionsprojekt:
- Wechseln Sie im Menü zum Tab Pipeline.
- Wählen Sie im Feld "Stages" die Option Add > New stage aus.
- Wählen Sie in der Vorlagenliste den Eintrag Empty job aus.
- Wenn Sie einen Namen für die Phase angeben sollen, geben Sie
Productionein. - Klicken Sie auf das Blitzsymbol der neu erstellten Phase.
Legen Sie folgende Einstellungen fest:
- Select trigger: After stage
- Stages: Development
- Pre-deployment approvals: (aktiviert)
- Approvers: Wählen Sie Ihren Nutzernamen aus.
Die Pipeline zeigt eine Ansicht ähnlich der folgenden an.
Wechseln Sie zum Tab Tasks.
Bewegen Sie den Mauszeiger auf den Tab Tasks und wählen Sie Tasks > Production aus.
Klicken Sie auf Agent Job (Agent-Job).
Setzen Sie die Agent-Spezifikation auf ubuntu-22.04.
Klicken Sie auf Add a task to agent job (Aufgabe zum Agent-Job hinzufügen) , um der Phase einen Schritt hinzuzufügen.
Wählen Sie die Aufgabe Befehlszeile aus und klicken Sie auf Hinzufügen:
Klicken Sie auf die neu hinzugefügte Aufgabe und legen Sie die folgenden Einstellungen fest:
- Display name (Anzeigename):
Deploy image to production project. 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).s3ns.iam.gserviceaccount.com \ --allow-unauthenticated \ --image=$(CloudRun.Region)-docker.pkg.dev/$(ContainerRegistry.ProjectId)/docker/clouddemo:$BUILD_BUILDID \ --platform=managed \ --region=$(CloudRun.Region) \ --project=$(CloudRun.ProjectId.Production)
- Display name (Anzeigename):
Klicken Sie auf Save.
Geben Sie bei Bedarf einen Kommentar ein und bestätigen Sie mit OK.
Pipeline ausführen
Nachdem Sie nun die gesamte Pipeline konfiguriert haben, können Sie sie testen, indem Sie eine Änderung am Quellcode vornehmen:
- Öffnen Sie auf Ihrem lokalen Computer die Datei
applications\clouddemo\netcore\CloudDemo.MvcCore\Views\Home\Index.cshtmlaus dem Git-Repository, das Sie zuvor geklont haben. - Ändern Sie den Wert von
ViewBag.TitlevonHome PageinHome Page Cloud Run. Übernehmen Sie die Änderungen und übertragen Sie sie per Push an Azure Pipelines.
Visual Studio
- Öffnen Sie den Team Explorer und klicken Sie auf das Symbol Startseite.
- Klicken Sie auf Änderungen.
- Geben Sie eine Commit-Nachricht wie
Change site titleein. - Klicken Sie auf Commit für alle und Push.
Befehlszeile
Alle geänderten Dateien bereitstellen:
git add -AÜbernehmen Sie die Änderungen für das lokale Repository:
git commit -m "Change site title"Übertragen Sie die Änderungen per Push an Azure Pipelines:
git push
Wählen Sie im Azure DevOps-Menü Pipelines aus. Ein Build wird ausgelöst.
Wählen Sie nach Abschluss des Builds Pipelines > Releases aus. Ein Freigabeprozess wird gestartet.
Klicken Sie auf Release-1, um die Detailseite zu öffnen, und warten Sie, bis der Status der Phase Development zu Succeeded wechselt.
Wechseln Sie in der Cloud de Confiance -Console zum Entwicklungsprojekt.
Wählen Sie im Menü Compute > Cloud Run aus.
Der Dienst clouddemo wurde bereitgestellt.
Klicken Sie auf clouddemo, um weitere Details aufzurufen.
Eine URL, aus der hervorgeht, dass Cloud Run den Dienst bereitgestellt hat, wird angezeigt.
Öffnen Sie die URL in einem neuen Browsertab, um zu prüfen, ob die CloudDemo-Anwendung bereitgestellt wurde und den benutzerdefinierten Titel verwendet.
Klicken Sie in Azure Pipelines neben der Phase Production auf Approve, um die Bereitstellung für die Produktionsumgebung auszulösen.
Optional: Geben Sie einen Kommentar ein.
Klicken Sie zur Bestätigung auf Approve und warten Sie, bis der Status der Umgebung Production zu Succeeded wechselt.
Wechseln Sie in der Cloud de Confiance -Console zum Produktionsprojekt.
Wählen Sie im Menü Compute > Cloud Run aus.
Der Dienst clouddemo wird im Produktionsprojekt bereitgestellt.
Klicken Sie auf clouddemo, um weitere Details aufzurufen.
Eine URL, aus der hervorgeht, dass Cloud Run den Dienst bereitgestellt hat, wird angezeigt.
Öffnen Sie die URL in einem neuen Browsertab, um zu prüfen, ob die CloudDemo-Anwendung für die Produktion bereitgestellt wurde und den benutzerdefinierten Titel verwendet.
Bereinigen
Löschen Sie die von Ihnen erstellten Entitäten, um nach Abschluss dieser Anleitung keine weiteren Kosten zu verursachen.
Azure Pipelines-Projekt löschen
Informationen zum Löschen des Azure Pipelines-Projekts finden Sie in der Dokumentation zu Azure DevOps Services. Wenn Sie das Azure Pipelines-Projekt löschen, gehen alle Änderungen am Quellcode verloren.
Cloud de Confiance Entwicklungs- und Produktionsprojekte löschen
- Wechseln Sie in der Cloud de Confiance -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Nächste Schritte
- Konfigurieren Sie eine benutzerdefinierte Domain für Ihren Cloud Run-Dienst.
- Erfahren Sie, wie Sie mit Azure Pipelines stattdessen dieselbe Anwendung in Google Kubernetes Engine bereitstellen.
- Weitere Informationen finden Sie unter .NET-Anwendungen in Cloud de Confiancebereitstellen.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center