Zelfstudie: Azure Storage gebruiken voor buildartefacten

Belangrijk

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

In dit artikel wordt uitgelegd hoe u Blob Storage gebruikt als een opslagplaats van buildartefacten die zijn gemaakt door een Oplossing voor continue integratie (CI) van Jenkins, of als bron van downloadbare bestanden die moeten worden gebruikt in een buildproces. 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 organisatieleden, uw klanten of een archief kunt onderhouden. Een ander scenario is wanneer uw buildtaak zelf andere bestanden vereist, bijvoorbeeld afhankelijkheden die moeten worden gedownload als onderdeel van de build-invoer.

Vereisten

Azure-referentie toevoegen die nodig is 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 appId service-principal op.
    • Wachtwoord: geef de password service-principal op.
    • Id: Geef een referentie-id op, zoals azuresp.
    • Beschrijving: Geef desgewenst een zinvolle beschrijving op voor uw omgeving.
  7. Selecteer OK om de referentie te maken.

Een pijplijntaak maken om buildartefacten te uploaden

De volgende stappen helpen u bij het maken van een pijplijntaak. De pijplijntaak maakt verschillende bestanden en uploadt de bestanden naar uw opslagaccount met behulp van Azure CLI.

  1. Selecteer Nieuw item in het Jenkins-dashboard.

  2. Geef de taak een naam, selecteer Pijplijn en selecteer VERVOLGENS OK.

  3. Selecteer in de sectie Pijplijn van de taakconfiguratie pijplijnscript en plak het volgende in Script. Bewerk de tijdelijke aanduidingen zodat 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 werk uit te voeren.

  5. Controleer de console-uitvoer op status. Wanneer de buildactie de buildartefacten uploadt, worden statusberichten voor Azure Storage naar de console geschreven.

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

  7. Wanneer de taak is voltooid, controleert 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 hebt gebruikt voor Jenkins.
    4. Selecteer Containers.
    5. Selecteer de container met de naam myjob in de lijst met blobs.
    6. U ziet nu 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 buildartefact.

    Belangrijkste punten:

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

Een pijplijntaak maken om te downloaden vanuit Azure Blob Storage

De volgende stappen laten zien hoe u een pijplijntaak 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 zodat 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. Nadat u een build hebt uitgevoerd, controleert u de uitvoer van de buildgeschiedenisconsole. U kunt ook uw downloadlocatie bekijken om te zien of de verwachte blobs zijn gedownload.

Volgende stappen