Continuous Integration und Continuous DeploymentContinuous integration and deployment

Im vorherigen Kapitel haben Sie ein lokales Git-Repository für die Simple Feed Reader-App erstellt.In the previous chapter, you created a local Git repository for the Simple Feed Reader app. In diesem Kapitel veröffentlichen Sie diesen Code in einem GitHub-Repository und erstellen mithilfe von Azure Pipelines eine Azure DevOps Services-Pipeline.In this chapter, you'll publish that code to a GitHub repository and construct an Azure DevOps Services pipeline using Azure Pipelines. Die Pipeline ermöglicht fortlaufende Builds und Bereitstellungen der App.The pipeline enables continuous builds and deployments of the app. Jeder Commit für das GitHub-Repository löst einen Build und eine Bereitstellung im Stagingslot der Azure-Web-App aus.Any commit to the GitHub repository triggers a build and a deployment to the Azure Web App's staging slot.

In diesem Abschnitt führen Sie die folgenden Aufgaben aus:In this section, you'll complete the following tasks:

  • Veröffentlichen des App-Codes auf GitHubPublish the app's code to GitHub
  • Trennen der Verbindung mit lokaler Git-BereitstellungDisconnect local Git deployment
  • Erstellen einer Azure DevOps-OrganisationCreate an Azure DevOps organization
  • Erstellen eines Teamprojekts in Azure DevOps ServicesCreate a team project in Azure DevOps Services
  • Erstellen einer BuilddefinitionCreate a build definition
  • Erstellen einer ReleasepipelineCreate a release pipeline
  • Ausführen eines Commits für Änderungen an GitHub und automatisches Bereitstellen in AzureCommit changes to GitHub and automatically deploy to Azure
  • Überprüfen der Azure Pipelines-PipelineExamine the Azure Pipelines pipeline

Veröffentlichen des App-Codes auf GitHubPublish the app's code to GitHub

  1. Öffnen Sie ein Browserfenster, und navigieren Sie zu https://github.com.Open a browser window, and navigate to https://github.com.

  2. Klicken Sie in der Kopfzeile auf das Dropdownmenü + und dann auf Neues Repository:Click the + drop-down in the header, and select New repository:

    GitHub-Option „Neues Repository“

  3. Klicken Sie im Dropdownmenü Besitzer auf Ihr Konto, und geben Sie simple-feed-reader in das Textfeld Repositoryname ein.Select your account in the Owner drop-down, and enter simple-feed-reader in the Repository name textbox.

  4. Klicken Sie auf die Schaltfläche Repository erstellen.Click the Create repository button.

  5. Öffnen Sie die Befehlsshell Ihres lokalen Computers.Open your local machine's command shell. Navigieren Sie zu dem Verzeichnis, in dem das Git-Repository simple-feed-reader gespeichert ist.Navigate to the directory in which the simple-feed-reader Git repository is stored.

  6. Benennen Sie das vorhandene origin-Remoteelement in upstream um.Rename the existing origin remote to upstream. Führen Sie den folgenden Befehl aus:Execute the following command:

    git remote rename origin upstream
    
  7. Fügen Sie ein neues origin-Remoteelement hinzu, das auf die Kopie des Repositorys auf GitHub zeigt.Add a new origin remote pointing to your copy of the repository on GitHub. Führen Sie den folgenden Befehl aus:Execute the following command:

    git remote add origin https://github.com/<GitHub_username>/simple-feed-reader/
    
  8. Veröffentlichen Sie Ihr lokales Git-Repository im neu erstellten GitHub-Repository.Publish your local Git repository to the newly created GitHub repository. Führen Sie den folgenden Befehl aus:Execute the following command:

    git push -u origin master
    
  9. Öffnen Sie ein Browserfenster, und navigieren Sie zu https://github.com/<GitHub_username>/simple-feed-reader/.Open a browser window, and navigate to https://github.com/<GitHub_username>/simple-feed-reader/. Überprüfen Sie, ob Ihr Code im GitHub-Repository angezeigt wird.Validate that your code appears in the GitHub repository.

Trennen der Verbindung mit lokaler Git-BereitstellungDisconnect local Git deployment

Entfernen Sie die lokale Git-Bereitstellung mit den folgenden Schritten.Remove the local Git deployment with the following steps. Azure Pipelines (ein Azure DevOps-Dienst) ersetzt diese Funktionalität und erweitert sie.Azure Pipelines (an Azure DevOps service) both replaces and augments that functionality.

  1. Öffnen Sie das Azure-Portal, und navigieren Sie zur Web-App staging (mywebapp<unique_number>/staging) .Open the Azure portal, and navigate to the staging (mywebapp<unique_number>/staging) Web App. Die Web-App kann schnell gefunden werden, indem Sie im Suchfeld des Portals staging eingeben:The Web App can be quickly located by entering staging in the portal's search box:

    Suchbegriff „staging“ in der Web-App

  2. Klicken Sie auf Bereitstellungscenter.Click Deployment Center. Ein neues Panel wird angezeigt.A new panel appears. Klicken Sie auf Verbindung trennen, um die lokale Konfiguration der Git-Quellcodeverwaltung zu entfernen, die im vorherigen Kapitel hinzugefügt wurde.Click Disconnect to remove the local Git source control configuration that was added in the previous chapter. Bestätigen Sie den Entfernungsvorgang, indem Sie auf die Schaltfläche Ja klicken.Confirm the removal operation by clicking the Yes button.

  3. Navigieren Sie zum App Service mywebapp<unique_number> .Navigate to the mywebapp<unique_number> App Service. Zur Erinnerung: Das Suchfeld des Portals kann verwendet werden, um App Service schnell zu finden.As a reminder, the portal's search box can be used to quickly locate the App Service.

  4. Klicken Sie auf Bereitstellungscenter.Click Deployment Center. Ein neues Panel wird angezeigt.A new panel appears. Klicken Sie auf Verbindung trennen, um die lokale Konfiguration der Git-Quellcodeverwaltung zu entfernen, die im vorherigen Kapitel hinzugefügt wurde.Click Disconnect to remove the local Git source control configuration that was added in the previous chapter. Bestätigen Sie den Entfernungsvorgang, indem Sie auf die Schaltfläche Ja klicken.Confirm the removal operation by clicking the Yes button.

Erstellen einer Azure DevOps-OrganisationCreate an Azure DevOps organization

  1. Öffnen Sie einen Browser, und navigieren Sie zur Seite für das Erstellen einer Azure DevOps-Organisation.Open a browser, and navigate to the Azure DevOps organization creation page.

  2. Geben Sie einen eindeutigen Namen in das Textfeld Wählen Sie einen einprägsamen Namen. ein, um die URL für den Zugriff auf Ihre Azure DevOps-Organisation zu bilden.Type a unique name into the Pick a memorable name textbox to form the URL for accessing your Azure DevOps organization.

  3. Aktivieren Sie das Optionsfeld Git, da der Code in einem GitHub-Repository gehostet wird.Select the Git radio button, since the code is hosted in a GitHub repository.

  4. Klicken Sie auf die Schaltfläche Continue (Weiter).Click the Continue button. Nach einer kurzen Wartezeit werden ein Konto und ein Teamprojekt mit dem Namen MyFirstProject erstellt.After a short wait, an account and a team project, named MyFirstProject, are created.

    Seite zum Erstellen der Azure DevOps-Organisation

  5. Öffnen Sie die Bestätigungs-E-Mail, die anzeigt, dass die Azure DevOps-Organisation und das Projekt verwendet werden können.Open the confirmation email indicating that the Azure DevOps organization and project are ready for use. Klicken Sie auf die Schaltfläche Starten Sie Ihr Projekt:Click the Start your project button:

    Schaltfläche „Starten Sie Ihr Projekt“

  6. In einem Browser wird <account_name>.visualstudio.com geöffnet.A browser opens to <account_name>.visualstudio.com. Klicken Sie auf den Link MyFirstProject, um mit der Konfiguration der DevOps-Pipeline des Projekts zu beginnen.Click the MyFirstProject link to begin configuring the project's DevOps pipeline.

Konfigurieren der Azure Pipelines-PipelineConfigure the Azure Pipelines pipeline

Für den Abschluss des Vorgangs sind drei Schritte erforderlich.There are three distinct steps to complete. Durch die Ausführung der Schritte in den folgenden drei Abschnitten wird eine funktionsfähige DevOps-Pipeline erstellt.Completing the steps in the following three sections results in an operational DevOps pipeline.

Gewähren des Zugriffs auf das GitHub-Repository für Azure DevOpsGrant Azure DevOps access to the GitHub repository

  1. Erweitern oder erstellen Sie den Code über den Accordion-Bereich eines externen Repositorys.Expand the or build code from an external repository accordion. Klicken Sie auf die Schaltfläche Build einrichten:Click the Setup Build button:

    Schaltfläche „Build einrichten“

  2. Klicken Sie im Abschnitt Quelle auswählen auf die Option GitHub:Select the GitHub option from the Select a source section:

    Auswählen einer Quelle (GitHub)

  3. Die Autorisierung ist erforderlich, bevor Azure DevOps auf Ihr GitHub-Repository zugreifen kann.Authorization is required before Azure DevOps can access your GitHub repository. Geben Sie im Textfeld Verbindungsname <GitHub_username> GitHub connection ein.Enter <GitHub_username> GitHub connection in the Connection name textbox. Zum Beispiel:For example:

    GitHub-Verbindungsname

  4. Wenn für Ihr GitHub-Konto die zweistufige Authentifizierung aktiviert ist, ist ein persönliches Zugriffstoken erforderlich.If two-factor authentication is enabled on your GitHub account, a personal access token is required. Klicken Sie in diesem Fall auf den Link Verwenden Sie zum Autorisieren das persönliche GitHub-Zugriffstoken.In that case, click the Authorize with a GitHub personal access token link. Wenn Sie Hilfe benötigen, finden Sie weitere Informationen in den offiziellen GitHub-Anweisungen für das Erstellen von persönlichen Zugriffstokens.See the official GitHub personal access token creation instructions for help. Nur der repo-Geltungsbereich wird benötigt.Only the repo scope of permissions is needed. Klicken Sie andernfalls auf die Schaltfläche Mithilfe von OAuth autorisieren.Otherwise, click the Authorize using OAuth button.

  5. Melden Sie sich bei Ihrem GitHub-Konto an, wenn Sie dazu aufgefordert werden.When prompted, sign in to your GitHub account. Klicken Sie dann auf „Autorisieren“, um Zugriff auf Ihre Azure DevOps-Organisation zu gewähren.Then select Authorize to grant access to your Azure DevOps organization. Bei erfolgreicher Ausführung wird ein neuer Dienstendpunkt erstellt.If successful, a new service endpoint is created.

  6. Klicken Sie neben der Schaltfläche Repository auf die Auslassungspunkte (...).Click the ellipsis button next to the Repository button. Wählen Sie das Repository <GitHub_username>/simple-feed-reader aus der Liste aus.Select the <GitHub_username>/simple-feed-reader repository from the list. Klicken Sie auf die Schaltfläche Auswählen.Click the Select button.

  7. Klicken Sie im Dropdownmenü Standardbranch für manuelle und geplante Builds auf den Branch master.Select the master branch from the Default branch for manual and scheduled builds drop-down. Klicken Sie auf die Schaltfläche Continue (Weiter).Click the Continue button. Die Seite für die Vorlagenauswahl wird angezeigt.The template selection page appears.

Erstellen der BuilddefinitionCreate the build definition

  1. Geben Sie auf der Seite für die Vorlagenauswahl ASP.NET Core in das Suchfeld ein:From the template selection page, enter ASP.NET Core in the search box:

    Suche nach ASP.NET Core auf der Vorlagenseite

  2. Die Suchergebnisse für die Vorlage werden angezeigt.The template search results appear. Zeigen Sie mit der Maustaste auf die Vorlage ASP.NET Core, und klicken Sie auf die Schaltfläche Anwenden.Hover over the ASP.NET Core template, and click the Apply button.

  3. Die Registerkarte Aufgaben der Builddefinition wird angezeigt.The Tasks tab of the build definition appears. Klicken Sie auf die Registerkarte Trigger.Click the Triggers tab.

  4. Aktivieren Sie das Kontrollkästchen Continuous Integration aktivieren.Check the Enable continuous integration box. Vergewissern Sie sich, dass im Abschnitt Branchfilter das Dropdownmenü Typ auf Einschließen festgelegt ist.Under the Branch filters section, confirm that the Type drop-down is set to Include. Legen Sie das Dropdownmenü Branchspezifikation auf master fest.Set the Branch specification drop-down to master.

    Aktivieren der Continuous Integration-Einstellungen

    Diese Einstellungen bewirken, dass ein Build ausgelöst wird, wenn eine Änderung mithilfe von Push an den master-Branch des GitHub-Repositorys übertragen wird.These settings cause a build to trigger when any change is pushed to the master branch of the GitHub repository. Continuous Integration wird im Abschnitt Committen von Änderungen auf GitHub und automatisches Bereitstellen in Azure getestet.Continuous integration is tested in the Commit changes to GitHub and automatically deploy to Azure section.

  5. Klicken Sie auf die Schaltfläche Speichern und in Warteschlange einreihen und dann auf die Option Speichern:Click the Save & queue button, and select the Save option:

    Schaltfläche „Speichern“

  6. Das folgende modale Dialogfeld wird angezeigt:The following modal dialog appears:

    Speichern der Builddefinition: modales Dialogfeld

    Verwenden Sie den Standardordner von \ , und klicken Sie auf die Schaltfläche Speichern.Use the default folder of \, and click the Save button.

Erstellen der ReleasepipelineCreate the release pipeline

  1. Klicken Sie auf die Registerkarte Releases Ihres Teamprojekts.Click the Releases tab of your team project. Klicken Sie auf die Schaltfläche Neue Pipeline.Click the New pipeline button.

    Registerkarte „Releases“: Schaltfläche für neue Definition

    Der Bereich für die Vorlagenauswahl wird angezeigt.The template selection pane appears.

  2. Geben Sie auf der Seite für die Vorlagenauswahl App Service in das Suchfeld ein:From the template selection page, enter App Service in the search box:

    Releasepipeline: Suchfeld für Vorlage

  3. Die Suchergebnisse für die Vorlage werden angezeigt.The template search results appear. Bewegen Sie den Mauszeiger über die Vorlage Azure App Service-Bereitstellung mit Slot, und klicken Sie auf die Schaltfläche Anwenden.Hover over the Azure App Service Deployment with Slot template, and click the Apply button. Die Registerkarte Pipeline der Releasepipeline wird angezeigt.The Pipeline tab of the release pipeline appears.

    Registerkarte „Pipeline“ der Releasepipeline

  4. Klicken Sie im Feld Artefakte auf die Schaltfläche Hinzufügen.Click the Add button in the Artifacts box. Das Panel Artefakt hinzufügen wird angezeigt:The Add artifact panel appears:

    Releasepipeline: Panel „Artefakt hinzufügen“

  5. Klicken Sie im Abschnitt Quelltyp auf die Kachel Build.Select the Build tile from the Source type section. Dieser Typ ermöglicht das Verknüpfen der Releasepipeline mit der Builddefinition.This type allows for the linking of the release pipeline to the build definition.

  6. Klicken Sie im Dropdownmenü Projekt auf MyFirstProject.Select MyFirstProject from the Project drop-down.

  7. Klicken sie im Dropdownmenü Source (Build definition) (Quelle (Builddefinition)) auf den Builddefinitionsnamen MyFirstProject-ASP.NET Core-CI.Select the build definition name, MyFirstProject-ASP.NET Core-CI, from the Source (Build definition) drop-down.

  8. Wählen Sie im Dropdownmenü Standardversion die Option Neueste aus.Select Latest from the Default version drop-down. Mit dieser Option werden die Artefakte erstellt, die von der neuesten Builddefinition erstellt wurden.This option builds the artifacts produced by the latest run of the build definition.

  9. Ersetzen Sie den Text im Textfeld Quellalias durch Ablegen.Replace the text in the Source alias textbox with Drop.

  10. Klicken Sie auf die Schaltfläche Hinzufügen.Click the Add button. Der Abschnitt Artefakte wird aktualisiert, um die Änderungen anzuzeigen.The Artifacts section updates to display the changes.

  11. Durch Klicken auf das Blitzsymbol wird Continuous Deployment aktiviert:Click the lightning bolt icon to enable continuous deployments:

    Releasepipeline: Blitzsymbol im Abschnitt „Artefakte“

    Wenn diese Option aktiviert ist, wird jedes Mal eine Bereitstellung durchgeführt, wenn ein neuer Build verfügbar ist.With this option enabled, a deployment occurs each time a new build is available.

  12. Im rechten Bereich wird das Panel Continuous Deployment-Trigger angezeigt.A Continuous deployment trigger panel appears to the right. Klicken Sie auf die Umschaltfläche, um das Feature zu aktivieren.Click the toggle button to enable the feature. Es ist nicht erforderlich, den Pull Request-Trigger zu aktivieren.It isn't necessary to enable the Pull request trigger.

  13. Klicken Sie im Abschnitt Build-Branchfilter auf das Dropdownmenü Hinzufügen.Click the Add drop-down in the Build branch filters section. Wählen Sie die Option Build Definition's default branch (Standardbranch der Builddefinition) aus.Choose the Build Definition's default branch option. Dieser Filter bewirkt, dass das Release nur für einen Build aus dem master-Branch des GitHub-Repository ausgelöst wird.This filter causes the release to trigger only for a build from the GitHub repository's master branch.

  14. Klicken Sie auf die Schaltfläche Speichern.Click the Save button. Klicken Sie im angezeigten modalen Dialogfeld Speichern auf die Schaltfläche OK.Click the OK button in the resulting Save modal dialog.

  15. Klicken Sie auf das Feld Umgebung 1.Click the Environment 1 box. Auf der rechten Seite wird das Panel Umgebung angezeigt.An Environment panel appears to the right. Ändern Sie den Text Umgebung 1 im Textfeld Umgebungsname in Produktion.Change the Environment 1 text in the Environment name textbox to Production.

    Releasepipeline: Textfeld für Umgebungsname

  16. Klicken Sie im Textfeld Produktion auf den Link 1 phase, 2 tasks (1 Phase, 2 Aufgaben):Click the 1 phase, 2 tasks link in the Production box:

    Releasepipeline: Produktionsumgebungslink.png

    Die Registerkarte Aufgaben der Umgebung wird angezeigt.The Tasks tab of the environment appears.

  17. Klicken Sie auf die Registerkarte Deploy Azure App Service to Slot (Azure App Service in Slot bereitstellen).Click the Deploy Azure App Service to Slot task. Die Einstellungen werden in einem Panel auf der rechten Seite angezeigt.Its settings appear in a panel to the right.

  18. Wählen Sie das Azure-Abonnement aus, das App Service im Dropdownmenü Azure-Abonnement zugeordnet ist.Select the Azure subscription associated with the App Service from the Azure subscription drop-down. Klicken Sie nach der Auswahl auf die Schaltfläche Autorisieren.Once selected, click the Authorize button.

  19. Klicken Sie im Dropdownmenü App-Typ auf die Option Web-App.Select Web App from the App type drop-down.

  20. Klicken Sie im Dropdownmenü App Service-Name auf die Option mywebapp/<unique_number/> .Select mywebapp/<unique_number/> from the App service name drop-down.

  21. Klicken Sie im Dropdownmenü Ressourcengruppe auf die Option AzureTutorial.Select AzureTutorial from the Resource group drop-down.

  22. Klicken Sie im Dropdownmenü Slot auf die Option Staging.Select staging from the Slot drop-down.

  23. Klicken Sie auf die Schaltfläche Speichern.Click the Save button.

  24. Zeigen Sie auf den Namen der standardmäßigen Releasepipeline.Hover over the default release pipeline name. Klicken Sie auf das Stiftsymbol, um diese zu bearbeiten.Click the pencil icon to edit it. Verwenden Sie MyFirstProject-ASP.NET Core-CD als Namen.Use MyFirstProject-ASP.NET Core-CD as the name.

    Releasepipelinename

  25. Klicken Sie auf die Schaltfläche Speichern.Click the Save button.

Ausführen eines Commits für Änderungen an GitHub und automatisches Bereitstellen in AzureCommit changes to GitHub and automatically deploy to Azure

  1. Öffnen Sie SimpleFeedReader.sln in Visual Studio.Open SimpleFeedReader.sln in Visual Studio.

  2. Öffnen Sie Pages\Index.cshtml im Projektmappen-Explorer.In Solution Explorer, open Pages\Index.cshtml. Ändern Sie <h2>Simple Feed Reader - V3</h2> in <h2>Simple Feed Reader - V4</h2>.Change <h2>Simple Feed Reader - V3</h2> to <h2>Simple Feed Reader - V4</h2>.

  3. Drücken Sie STRG+UMSCHALT+B, um die App zu erstellen.Press Ctrl+Shift+B to build the app.

  4. Committen Sie die Datei in das GitHub-Repository.Commit the file to the GitHub repository. Verwenden Sie entweder die Seite Änderungen in der Registerkarte Team Explorer von Visual Studio, oder führen Sie mithilfe der Befehlsshell des lokalen Computers Folgendes aus:Use either the Changes page in Visual Studio's Team Explorer tab, or execute the following using the local machine's command shell:

    git commit -a -m "upgraded to V4"
    
  5. Übertragen Sie die Änderung im master-Branch mithilfe von Push an das origin-Remoteelement Ihres GitHub-Repositorys:Push the change in the master branch to the origin remote of your GitHub repository:

    git push origin master
    

    Der Commit wird im master-Branch des GitHub-Repositorys angezeigt:The commit appears in the GitHub repository's master branch:

    GitHub-Commit im „master“-Branch

    Der Build wird ausgelöst, da Continuous Integration in der Registerkarte Trigger der Builddefinition aktiviert ist:The build is triggered, since continuous integration is enabled in the build definition's Triggers tab:

    Aktivieren von Continuous Integration

  6. Navigieren Sie in Azure DevOps Services auf der Seite Azure Pipelines > Builds zur Registerkarte In Warteschlange eingereihtNavigate to the Queued tab of the Azure Pipelines > Builds page in Azure DevOps Services. Der Build in der Warteschlange zeigt den Branch und den Commit, die den Build ausgelöst haben:The queued build shows the branch and commit that triggered the build:

    Build in Warteschlange

  7. Sobald der Buildvorgang erfolgreich ist, erfolgt eine Bereitstellung in Azure.Once the build succeeds, a deployment to Azure occurs. Navigieren Sie im Browser zur App.Navigate to the app in the browser. Beachten Sie, dass der Text „V4“ in der Überschrift angezeigt wird:Notice that the "V4" text appears in the heading:

    Aktualisierte App

Überprüfen der Azure Pipelines-PipelineExamine the Azure Pipelines pipeline

BuilddefinitionBuild definition

Eine Builddefinition mit dem Namen MyFirstProject-ASP.NET Core-CI wurde erstellt.A build definition was created with the name MyFirstProject-ASP.NET Core-CI. Nach Abschluss erstellt der Build eine ZIP-Datei einschließlich der zu veröffentlichenden Ressourcen.Upon completion, the build produces a .zip file including the assets to be published. Die Releasepipeline stellt diese Ressourcen in Azure bereit.The release pipeline deploys those assets to Azure.

Auf der Registerkarte Aufgaben der Builddefinition werden die einzelnen Schritte aufgelistet, die verwendet werden.The build definition's Tasks tab lists the individual steps being used. Es gibt fünf Buildaufgaben.There are five build tasks.

Builddefinitionsaufgaben

  1. Wiederherstellen führt den Befehl dotnet restore aus, um die NuGet-Pakete der App wiederherzustellen.Restore — Executes the dotnet restore command to restore the app's NuGet packages. Der verwendete Standardpaketfeed ist nuget.org.The default package feed used is nuget.org.

  2. Build führt den Befehl dotnet build --configuration release aus, um den App-Code zu kompilieren.Build — Executes the dotnet build --configuration release command to compile the app's code. Diese --configuration-Option wird verwendet, um eine optimierte Version des Codes zu erstellen, die für die Bereitstellung in einer Produktionsumgebung geeignet ist.This --configuration option is used to produce an optimized version of the code, which is suitable for deployment to a production environment. Ändern Sie die Variable BuildConfiguration auf der Registerkarte Variablen der Builddefinition, wenn beispielsweise eine Debugkonfiguration erforderlich ist.Modify the BuildConfiguration variable on the build definition's Variables tab if, for example, a debug configuration is needed.

  3. Testen führt den dotnet test --configuration release --logger trx --results-directory <local_path_on_build_agent>-Befehl aus, um die Komponententests der App auszuführen.Test — Executes the dotnet test --configuration release --logger trx --results-directory <local_path_on_build_agent> command to run the app's unit tests. Komponententests werden in jedem C#-Projekt ausgeführt, das mit dem **/*Tests/*.csproj-Globmuster übereinstimmt.Unit tests are executed within any C# project matching the **/*Tests/*.csproj glob pattern. Testergebnisse werden in einer TRX-Datei an dem Speicherort gespeichert, der durch die Option --results-directory angegeben wird.Test results are saved in a .trx file at the location specified by the --results-directory option. Wenn ein Test fehlschlägt, schlägt der Build fehl und wird nicht bereitgestellt.If any tests fail, the build fails and isn't deployed.

    Hinweis

    Ändern Sie SimpleFeedReader.Tests\Services\NewsServiceTests.cs, um einen der Tests absichtlich zu unterbrechen, um zu überprüfen, ob die Komponententests funktionieren.To verify the unit tests work, modify SimpleFeedReader.Tests\Services\NewsServiceTests.cs to purposefully break one of the tests. Ändern Sie beispielsweise in der Returns_News_Stories_Given_Valid_Uri-Methode Assert.True(result.Count > 0); in Assert.False(result.Count > 0); .For example, change Assert.True(result.Count > 0); to Assert.False(result.Count > 0); in the Returns_News_Stories_Given_Valid_Uri method. Committen Sie die Änderung, und übertragen Sie diese mithilfe von Push an GitHub.Commit and push the change to GitHub. Der Build wird ausgelöst und schlägt fehl.The build is triggered and fails. Der Status der Buildpipeline wird in failed (Fehlgeschlagen) geändert.The build pipeline status changes to failed. Machen Sie die Änderung rückgängig, committen Sie noch mal, und übertragen Sie sie erneut mithilfe von Push.Revert the change, commit, and push again. Der Build ist erfolgreich.The build succeeds.

  4. Veröffentlichen führt den dotnet publish --configuration release --output <local_path_on_build_agent>-Befehl aus, um eine ZIP-Datei mit den bereitzustellenden Artefakten zu erstellen.Publish — Executes the dotnet publish --configuration release --output <local_path_on_build_agent> command to produce a .zip file with the artifacts to be deployed. Die Option --output gibt den Veröffentlichungsort der ZIP-Datei an.The --output option specifies the publish location of the .zip file. Dieser Speicherort wird durch Übergeben einer vordefinierten Variablen namens $(build.artifactstagingdirectory) angegeben.That location is specified by passing a predefined variable named $(build.artifactstagingdirectory). Diese Variable wird zu einem lokalen Pfad wie beispielsweise c:\agent_work\1\a auf dem Build-Agent erweitert.That variable expands to a local path, such as c:\agent_work\1\a, on the build agent.

  5. Artefakt veröffentlichen veröffentlicht die ZIP-Datei, die von der Aufgabe Veröffentlichen erstellt wurde.Publish Artifact — Publishes the .zip file produced by the Publish task. Die Aufgabe akzeptiert den Speicherort der ZIP-Datei als Parameter, bei dem es sich um die vordefinierte Variable $(build.artifactstagingdirectory) handelt.The task accepts the .zip file location as a parameter, which is the predefined variable $(build.artifactstagingdirectory). Die ZIP-Datei wird als Ordner namens drop veröffentlicht.The .zip file is published as a folder named drop.

Klicken Sie auf den Link Zusammenfassung der Builddefinition, um den Verlauf der Builds mit der folgenden Definition anzuzeigen:Click the build definition's Summary link to view a history of builds with the definition:

Screenshot mit dem Builddefinitionsverlauf

Klicken Sie auf der dann angezeigten Seite auf den Link, der der eindeutigen Buildnummer entspricht:On the resulting page, click the link corresponding to the unique build number:

Screenshot mit der Zusammenfassungsseite der Builddefinition

Eine Zusammenfassung dieses spezifischen Builds wird angezeigt.A summary of this specific build is displayed. Klicken Sie auf die Registerkarte Artefakte, und beachten Sie, dass der vom Build erstellte Ordner drop aufgeführt wird:Click the Artifacts tab, and notice the drop folder produced by the build is listed:

Screenshot mit den Builddefinitionsartefakten: „drop“-Ordner

Verwenden Sie die Links Download und Durchsuchen, um die veröffentlichten Artefakte zu überprüfen.Use the Download and Explore links to inspect the published artifacts.

ReleasepipelineRelease pipeline

Eine Releasepipeline mit dem Namen MyFirstProject-ASP.NET Core-CD wurde erstellt:A release pipeline was created with the name MyFirstProject-ASP.NET Core-CD:

Screenshot mit der Übersicht über Releasepipelines

Die beiden Hauptkomponenten der Releasepipeline sind die Artefakte und die Umgebungen.The two major components of the release pipeline are the Artifacts and the Environments. Wenn Sie im Bereich Artefakte auf das Feld klicken, wird das folgende Panel angezeigt:Clicking the box in the Artifacts section reveals the following panel:

Screenshot mit den Releasepipelineartefakten

Der Wert Source (Build definition) (Quelle (Builddefinition)) steht für die Builddefinition, mit der diese Releasepipeline verknüpft ist.The Source (Build definition) value represents the build definition to which this release pipeline is linked. Die ZIP-Datei, die bei erfolgreicher Ausführung der Builddefinition erstellt wurde, wird für die Umgebung Produktion für die Bereitstellung in Azure bereitgestellt.The .zip file produced by a successful run of the build definition is provided to the Production environment for deployment to Azure. Klicken Sie im Feld für die Umgebung Produktion auf den Link 1 phase, 2 tasks (1 Phase, 2 Aufgaben), um die Aufgaben der Releasepipeline anzuzeigen:Click the 1 phase, 2 tasks link in the Production environment box to view the release pipeline tasks:

Screenshot mit den Releasepipelineaufgaben

Die Releasepipeline besteht aus zwei Aufgaben: Deploy Azure App Service to Slot (Azure App Service in Slot bereitstellen) und Manage Azure App Service - Slot Swap (Azure App Service verwalten – Slotaustausch).The release pipeline consists of two tasks: Deploy Azure App Service to Slot and Manage Azure App Service - Slot Swap. Wenn Sie auf die erste Aufgabe klicken, wird die folgende Aufgabenkonfiguration angezeigt:Clicking the first task reveals the following task configuration:

Screenshot mit der Bereitstellungsaufgabe für die Releasepipeline

Das Azure-Abonnement, der Diensttyp, der Name der Web-App, die Ressourcengruppe und der Bereitstellungsslot werden in der Bereitstellungsaufgabe definiert.The Azure subscription, service type, web app name, resource group, and deployment slot are defined in the deployment task. Das Textfeld Paket oder Ordner enthält den Pfad der ZIP-Datei, die extrahiert und im Stagingslot der Web-App mywebapp<unique_number> bereitgestellt werden soll.The Package or folder textbox holds the .zip file path to be extracted and deployed to the staging slot of the mywebapp<unique_number> web app.

Wenn Sie auf die Aufgabe für den Slotaustausch klicken, wird die folgende Aufgabenkonfiguration angezeigt:Clicking the slot swap task reveals the following task configuration:

Screenshot mit der Slotaustauschaufgabe für die Releasepipeline

Das Abonnement, die Ressourcengruppe, der Diensttyp, der Name der Web-App und Details zum Bereitstellungsslot werden bereitgestellt.The subscription, resource group, service type, web app name, and deployment slot details are provided. Das Kontrollkästchen Mit Produktion tauschen ist aktiviert.The Swap with Production check box is checked. Folglich werden die Bits, die im Stagingslot bereitgestellt werden, in der Produktionsumgebung ausgetauscht.Consequently, the bits deployed to the staging slot are swapped into the production environment.

Weiterführende LiteraturAdditional reading