Freigeben über


Tutorial: Verwenden von Azure Storage für Buildartefakte

Wichtig

Viele Azure-Dienste verfügen über Jenkins-Plug-Ins. Einige dieser Plug-Ins werden ab dem 29. Februar 2024 nicht mehr unterstützt. Azure CLI ist die derzeit empfohlene Methode zum Integrieren von Jenkins in Azure-Dienste. Weitere Informationen finden Sie im Artikel Jenkins-Plug-Ins für Azure.

In diesem Artikel wird veranschaulicht, wie Blob Storage als Repository von Buildartefakten verwendet wird, die von einer Jenkins Continuous Integration (CI)-Lösung erstellt wurden, oder als Quelle herunterladbarer Dateien, die in einem Buildprozess verwendet werden. Eines der Szenarien, in denen Sie diese Lösung nützlich finden würden, ist, wenn Sie in einer agilen Entwicklungsumgebung (mit Java oder anderen Sprachen) Codieren, Builds basierend auf einer kontinuierlichen Integration ausgeführt werden und Sie ein Repository für Ihre Buildartefakte benötigen, damit Sie sie beispielsweise für andere Organisationsmitglieder, Ihre Kunden oder das Verwalten eines Archivs freigeben können. Ein anderes Szenario liegt vor, wenn für Ihren Buildauftrag an sich andere Dateien erforderlich sind, beispielsweise als Teil der Buildeingabe herunterzuladende Abhängigkeiten.

Voraussetzungen

Hinzufügen von Azure-Anmeldeinformationen, die zum Ausführen der Azure CLI erforderlich sind

  1. Navigieren Sie zum Jenkins-Portal.

  2. Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.

  3. Wählen Sie Manage Credentials (Anmeldeinformationen verwalten) aus.

  4. Wählen Sie die globale Domäne aus.

  5. Wählen Sie Add Credentials (Anmeldeinformationen hinzufügen) aus.

  6. Füllen Sie die erforderlichen Felder wie folgt aus:

    • Art: Wählen Sie Benutzername mit Kennwort.
    • Benutzername: Geben Sie den appId des Dienstprinzipals an.
    • Kennwort: Geben Sie das password des Dienstprinzipals an.
    • ID: Geben Sie eine Kennung für die Anmeldeinformationen an, wie z. B. azuresp.
    • Beschreibung: Fügen Sie optional eine aussagekräftige Beschreibung für Ihre Umgebung hinzu.
  7. Wählen Sie OK aus, um die Anmeldeinformationen zu erstellen.

Erstellen eines Pipelineauftrags zum Hochladen von Buildartefakten

In den folgenden Schritten wird gezeigt, wie Sie einen Pipelineauftrag erstellen. Der Pipeline-Job erstellt mehrere Dateien und lädt diese mithilfe der Azure CLI in Ihr Speicherkonto hoch.

  1. Wählen Sie auf dem Jenkins-Dashboard die Option New Item (Neues Element) aus.

  2. Nennen Sie den Auftrag myjob, wählen Sie Pipeline aus, und wählen Sie anschließend OK aus.

  3. Wählen Sie im Abschnitt Pipeline der Auftragskonfiguration die Option Pipeline script (Pipelineskript) aus, und fügen Sie unter Script (Skript) Folgendes ein. Bearbeiten Sie die Platzhalter, um den Werten für Ihre Umgebung zu entsprechen.

    pipeline {
      agent any
      environment {
        AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999'
        AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999'
        AZURE_STORAGE_ACCOUNT='myStorageAccount'
      }
      stages {
        stage('Build') {
          steps {
            sh 'rm -rf *'
            sh 'mkdir text'
            sh 'echo Hello Azure Storage from Jenkins > ./text/hello.txt'
            sh 'date > ./text/date.txt'
          }
    
          post {
            success {
              withCredentials([usernamePassword(credentialsId: 'azuresp', 
                              passwordVariable: 'AZURE_CLIENT_SECRET', 
                              usernameVariable: 'AZURE_CLIENT_ID')]) {
                sh '''
                  echo $container_name
                  # Login to Azure with ServicePrincipal
                  az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                  # Set default subscription
                  az account set --subscription $AZURE_SUBSCRIPTION_ID
                  # Execute upload to Azure
                  az storage container create --account-name $AZURE_STORAGE_ACCOUNT --name $JOB_NAME --auth-mode login
                  az storage blob upload-batch --destination ${JOB_NAME} --source ./text --account-name $AZURE_STORAGE_ACCOUNT
                  # Logout from Azure
                  az logout
                '''
              }
            }
          }
        }
      }
    }
    
  4. Wählen Sie Build Now (Jetzt erstellen) aus, um myjob auszuführen.

  5. Prüfen Sie den Status in der Ausgabe der Konsole. Wenn im Rahmen der Postbuildaktion die Buildartefakte hochgeladen werden, werden Statusmeldungen für Azure Storage in die Konsole geschrieben.

  6. Wenn ein Fehler ähnlich wie folgt auftritt, bedeutet dies, dass Sie Zugriff auf Containerebene gewähren müssen: ValidationError: You do not have the required permissions needed to perform this operation. Wenn Sie diese Fehlermeldung erhalten, lesen Sie die folgenden Artikel, um das Problem zu lösen.

  7. Untersuchen Sie nach erfolgreichem Abschluss des Auftrags die Buildartefakte, indem Sie das öffentliche Blob öffnen:

    1. Melden Sie sich beim Azure-Portal an.
    2. Wählen Sie Speicher aus.
    3. Wählen Sie den Namen des Speicherkontos aus, den Sie für Jenkins verwendet haben.
    4. Wählen Sie Container aus.
    5. Wählen Sie den Container mit dem Namen myjobin der Liste der Blobs aus.
    6. Die folgenden beiden Dateien sollten angezeigt werden: hello.txt und date.txt.
    7. Kopieren Sie die URL für eines dieser Elemente, und fügen Sie sie in Ihren Browser ein.
    8. Sie sehen die Textdatei, die als Buildartefakt hochgeladen wurde.

    Wichtige Punkte:

    • Containernamen und Blob-Namen bestehen im Azure-Speicher aus Kleinbuchstaben (es wird zwischen Groß- und Kleinschreibung unterschieden).

Erstellen eines Pipelineauftrags zum Herunterladen aus Azure Blob Storage

Die folgenden Schritte zeigen, wie Sie einen Pipelineauftrag zum Herunterladen von Elementen aus Azure Blob Storage konfigurieren.

  1. Wählen Sie im Abschnitt Pipeline der Auftragskonfiguration die Option Pipeline script (Pipelineskript) aus, und fügen Sie unter Script (Skript) Folgendes ein. Bearbeiten Sie die Platzhalter, um den Werten für Ihre Umgebung zu entsprechen.

    pipeline {
      agent any
      environment {
        AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999'
        AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999'
        AZURE_STORAGE_ACCOUNT='myStorageAccount'
      }
      stages {
        stage('Build') {
          steps {
            withCredentials([usernamePassword(credentialsId: 'azuresp', 
                            passwordVariable: 'AZURE_CLIENT_SECRET', 
                            usernameVariable: 'AZURE_CLIENT_ID')]) {
              sh '''
                # Login to Azure with ServicePrincipal
                az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                # Set default subscription
                az account set --subscription $AZURE_SUBSCRIPTION_ID
                # Execute upload to Azure
                az storage blob download --account-name $AZURE_STORAGE_ACCOUNT --container-name myjob --name hello.txt --file ${WORKSPACE}/hello.txt --auth-mode login
                # Logout from Azure
                az logout
              '''   
            }
          }
        }
      }
    }
    
  2. Überprüfen Sie nach dem Ausführen eines Buildvorgangs die Konsolenausgabe zum Buildverlauf. Alternativ können Sie sich auch Ihren Downloadspeicherort ansehen, um zu ermitteln, ob die erwarteten Blobs erfolgreich heruntergeladen wurden.

Nächste Schritte