Zelfstudie: Azure Storage gebruiken voor buildartefacten

Belangrijk

Veel Azure-services hebben Jenkins-in plug-ins. Sommige van deze in plug-ins worden vanaf 29 februari 2024 niet meer ondersteund. Azure CLI is de momenteel aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-in plug-ins voor Azure voor meer informatie.

In dit artikel wordt beschreven hoe u Blob Storage gebruikt als een opslagplaats met buildartefacten die zijn gemaakt door een Jenkins-oplossing voor continue integratie (CI) of als bron van downloadbare bestanden die in een bouwproces kunnen worden gebruikt. Een van de scenario's waarin u deze oplossing nuttig vindt, is wanneer u codeert in een flexibele ontwikkelomgeving (met behulp van Java of andere talen), builds worden uitgevoerd op basis van continue integratie en u een opslagplaats nodig hebt voor uw buildartefacten, zodat u deze bijvoorbeeld kunt delen met andere leden van de organisatie, uw klanten of een archief kunt onderhouden. Een ander scenario is wanneer uw build-taak zelf andere bestanden vereist, bijvoorbeeld afhankelijkheden die moeten worden gedownload als onderdeel van de buildinvoer.

Vereisten

Azure-referenties toevoegen die nodig zijn om Azure CLI uit te voeren

  1. Blader naar de Jenkins-portal.

  2. Selecteer Jenkins beheren in het menu.

  3. Selecteer Referenties beheren.

  4. Selecteer het globale domein.

  5. Selecteer Referenties toevoegen.

  6. Vul de vereiste velden als volgt in:

    • Soort:selecteer Gebruikersnaam met wachtwoord.
    • Gebruikersnaam:geef de van de service-principal op.
    • Wachtwoord:geef de van de service-principal op.
    • Id:geef een referentie-id op, zoals .
    • Beschrijving:voeg eventueel een duidelijke beschrijving voor uw omgeving toe.
  7. Selecteer OK om de referentie te maken.

Een pijplijn-taak maken om buildartefacten te uploaden

De volgende stappen begeleiden u bij het maken van een pijplijn-taak. De pijplijn-taak maakt verschillende bestanden en uploadt de bestanden naar uw opslagaccount met behulp van Azure CLI.

  1. Selecteer nieuw item in het Jenkins-dashboard.

  2. Noem de taak myjob,selecteer Pijplijnen selecteer vervolgens OK.

  3. Selecteer in de sectie Pijplijn van de taakconfiguratie de optie Pijplijnscript en plak het volgende in Script. Bewerk de tijdelijke aanduidingen zo dat deze overeenkomen met de waarden voor uw omgeving.

    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. Selecteer Nu bouwen om mijn taak uit te voeren.

  5. Bekijk de console-uitvoer op status. Wanneer met de actie na het bouwen de build-artefacten worden geüpload, worden statusberichten voor Azure Storage naar de console geschreven.

  6. Als u een fout tegenkomt die vergelijkbaar is met het volgende, betekent dit dat u toegang moet verlenen op containerniveau: Als u dit foutbericht ontvangt, raadpleegt u de volgende artikelen om het probleem op te ValidationError: You do not have the required permissions needed to perform this operation. lossen:

  7. Nadat de taak is voltooid, onderzoekt u de buildartefacten door de openbare blob te openen:

    1. Meld u aan bij de Azure-portal.
    2. Selecteer Opslag.
    3. Selecteer de naam van het opslagaccount dat u voor Jenkins hebt gebruikt.
    4. Selecteer Containers.
    5. Selecteer de container met de naam myjobin de lijst met blobs.
    6. Als het goed is, ziet u de volgende twee bestanden:hello.txt en date.txt.
    7. Kopieer de URL voor een van deze items en plak deze in uw browser.
    8. U ziet het tekstbestand dat is geüpload als een build-artefact.

    Belangrijkste punten:

    • Containernamen en blobnamen zijn kleine letters (en hoofdlettergevoelig) in Azure Storage.

Een pijplijn taak maken om te downloaden van Azure Blob Storage

De volgende stappen laten zien hoe u een pijplijn-taak configureert voor het downloaden van items uit Azure Blob Storage.

  1. Selecteer in de sectie Pijplijn van de taakconfiguratie de optie Pijplijnscript en plak het volgende in Script. Bewerk de tijdelijke aanduidingen zo dat deze overeenkomen met de waarden voor uw omgeving.

    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. Controleer na het uitvoeren van een build de uitvoer van de buildgeschiedenisconsole. U kunt ook uw downloadlocatie bekijken om te zien of de verwachte blobs zijn gedownload.

Volgende stappen