Continuous Deployment aus einem Jenkins-Build

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Hinweis

In Microsoft Team Foundation Server (TFS) 2018 und früheren Versionen werden Build- und Release-Pipelines als Definitionen bezeichnet, Ausführungen werden als Builds bezeichnet, Dienstverbindungen werden als Dienstendpunkte bezeichnet, Stages werden als Umgebungen bezeichnet und Aufträge werden als Phasen bezeichnet.

Azure Pipelines unterstützt die Integration mit Jenkins, sodass Sie Jenkins for Continuous Integration (CI) verwenden können, während Sie mehrere DevOps Vorteile von einer Azure Pipelines Releasepipeline erhalten, die in Azure bereitgestellt wird:

  • Wiederverwenden Ihrer vorhandenen Investitionen in Jenkins-Buildaufträge
  • Nachverfolgen von Arbeitselementen und verwandten Codeänderungen
  • Abrufen der End-to-End-Ablaufverfolgung für Ihren CI/CD-Workflow
  • Konsistente Bereitstellung in einer Reihe von Clouddiensten
  • Erzwingen der Qualität von Builds durch Gating-Bereitstellungen
  • Definieren von Arbeitsflüssen wie manuellen Genehmigungsprozessen und CI-Triggern
  • Integrieren von Jenkins mit JIRA und Azure Pipelines, um verknüpfte Probleme für jeden Jenkins-Auftrag anzuzeigen
  • Integrieren in andere Dienstverwaltungstools wie ServiceNow

Ein typischer Ansatz besteht darin, Jenkins zum Erstellen einer App aus Quellcode zu verwenden, die in einem Git-Repository wie GitHub gehostet wird und dann mit Azure Pipelines auf Azure bereitgestellt wird.

Schematic of deployment from GitHub and Jenkins to Azure

Voraussetzungen

  • Sie benötigen den Quellcode für Ihre In einem Repository gehostete App, z. B. GitHub, Azure Repos, GitHub Enterprise Server, Bitbucket Cloud oder einen anderen Quellsteuerungsanbieter, mit dem Jenkins interagieren kann.
  • Sie benötigen einen Jenkins-Server, auf dem Sie Ihre CI-Builds ausführen. Sie können schnell einen Jenkins-Server auf Azure einrichten.
  • Sie benötigen ein Jenkins-Projekt, das Ihre App erstellt. Sie können beispielsweise eine Java-App mit Maven auf Jenkins erstellen.

Erstellen Sie eine Jenkins-Dienstverbindung aus dem Abschnitt "Dienstverbindungen " der Projekteinstellungenseite.

Öffnen Sie in TFS die Seite "Dienste " aus dem Symbol "Einstellungen" in der oberen Menüleiste.

Weitere Informationen finden Sie unter Jenkins-Dienstverbindung. Wenn Sie nicht mit den allgemeinen Konzepten in diesem Abschnitt vertraut sind, lesen Sie den Zugriff auf Ihre Projekteinstellungenund das Erstellen und Verwenden einer Dienstverbindung.

Hinzufügen eines Jenkins-Artefaktes

Erstellen Sie eine neue Releasepipeline, und fügen Sie ihr ein Jenkins-Artefakte hinzu. Nachdem Sie die Jenkins-Dienstverbindung ausgewählt haben, können Sie einen vorhandenen Jenkins-Auftrag auswählen, der bereitgestellt werden soll.

Es ist möglich , die Ausgabe aus einem Jenkins-Build im Azure-Blobspeicher zu speichern. Wenn Sie dies in Ihrem Jenkins-Projekt konfiguriert haben, wählen Sie "Artefakte aus Azure-Speicher herunterladen " aus, und wählen Sie den Standardversions- und Quellalias aus.

Weitere Informationen finden Sie unter Jenkins-Artefakte. Wenn Sie nicht mit den allgemeinen Konzepten in diesem Abschnitt vertraut sind, finden Sie unter Erstellen einer Releasepipelineund Release-Artefakte und Artefaktequellen.

Definieren der Bereitstellungsschritte

Fügen Sie die Aufgaben hinzu, die Sie benötigen, um Ihre App im Abschnitt " Agent-Auftrag " auf der Seite "Aufgaben " Ihrer Releasepipeline bereitzustellen. Fügen Sie beispielsweise die Azure App Service Bereitstellungsaufgabe hinzu, um eine Web-App bereitzustellen.

Fügen Sie den Azure App Service Aufgaben-YAML-Code zu einem Auftrag in der .yml Datei im Stammverzeichnis des Repositorys hinzu.


...
jobs:
- job: DeployMyApp
  pool:
    name: Default
  steps:
  - task: AzureRmWebAppDeployment@4
    inputs:
      connectionType: 'AzureRM'
      azureSubscription: your-subscription-name
      appType: webAppLinux
      webAppName: 'MyApp'
      deployToSlotOrASE: false
      packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
      takeAppOfflineFlag: true
...

YAML-Builds sind noch nicht auf TFS verfügbar.

Wenn Sie Ihre Azure-Releasepipeline auslösen, werden die artefakte, die vom Jenkins CI-Auftrag veröffentlicht werden, heruntergeladen und für Ihre Bereitstellung zur Verfügung gestellt. Sie erhalten vollständige Ablaufverfolgung ihres Workflows, einschließlich der Commits, die jedem Auftrag zugeordnet sind.

Weitere Informationen zur Azure App Service Bereitstellungsaufgabe Wenn Sie nicht mit den allgemeinen Konzepten in diesem Abschnitt vertraut sind, finden Sie unter Build- und Releaseaufträge undVerwenden von Aufgaben in Builds und Versionen.

Aktivieren von Continuous Deployment

Wenn Ihr Jenkins-Server in Azure gehostet wird oder Ihre Azure DevOps Organisation eine direkte Sichtbarkeit auf Ihren Jenkins-Server hat, können Sie eine fortlaufende Bereitstellung (CD) in Ihrer Releasepipeline problemlos aktivieren, die dazu führt, dass eine Version erstellt und jede Bereitstellung gestartet wird, wenn das Quellartefakt aktualisiert wird.

So aktivieren Sie die kontinuierliche Bereitstellung für einen von Azure gehosteten oder direkt sichtbaren Jenkins-Server:

  1. Öffnen Sie den Triggerbereich der kontinuierlichen Bereitstellung aus der Pipelines Seite Ihrer Releasepipeline.

  2. Ändern Sie die Einstellung in "Aktiviert".

  3. Wählen Sie "Hinzufügen " aus, und wählen Sie den Branch aus, für den Sie den Trigger erstellen möchten. Oder wählen Sie den Standardzweig aus.

Wenn Sie jedoch über einen lokalen Jenkins-Server verfügen oder Ihre Azure DevOps Organisation keine direkte Sichtbarkeit für Ihren Jenkins Server hat, können Sie eine Version für eine Azure-Pipeline aus einem Jenkins-Projekt mit den folgenden Schritten auslösen:

  1. Erstellen Sie ein persönliches Zugriffstoken (PAT) in Ihrer Azure DevOps oder TFS-Organisation. Jenkins erfordert diese Informationen, um auf Ihre Organisation zuzugreifen. Stellen Sie sicher, dass Sie eine Kopie der Tokeninformationen für bevorstehende Schritte in diesem Abschnitt beibehalten.

  2. Installieren Sie das Team Foundation Server Plug-In auf Ihrem Jenkins-Server.

  3. Innerhalb Ihres Jenkins-Projekts finden Sie eine neue Post-Build-Aktion namens Trigger release in TFS/Team Services. Fügen Sie dieses Projekt hinzu.

  4. Geben Sie die Auflistungs-URL für Ihre Azure DevOps Organisation oder TFS-Server alshttps://<accountname>.visualstudio.com/DefaultCollection/

  5. Lassen Sie den Benutzernamen leer, und geben Sie Ihr PAT als Kennwort ein.

  6. Wählen Sie das Azure DevOps Projekt und die Releasedefinition aus, die ausgelöst werden soll.

Jetzt wird jedes Mal, wenn Ihr Jenkins CI-Auftrag abgeschlossen ist, eine neue CD-Version ausgelöst.

Weitere Informationen