Delen via


Handleiding: Azure Storage gebruiken voor build-artefacten

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 Azurevoor 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.

Voorwaarden

Azure-referentie toevoegen die nodig is om Azure CLI uit te voeren

  1. Blader naar de Jenkins-portal.

  2. Selecteer in het menu Jenkins-beheren.

  3. Selecteer Inloggegevens 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 van de service-principal op.
    • wachtwoord: geef de password van de serviceprincipal 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 begeleiden u bij het creëren van een pijplijnopdracht. De pijplijntaak maakt verschillende bestanden en uploadt de bestanden naar uw opslagaccount met behulp van Azure CLI.

  1. Selecteer in het Jenkins-dashboard Nieuw item.

  2. Noem de taak myjob, selecteer Pipelineen selecteer OK.

  3. Selecteer in de sectie Pipeline 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. Kies Bouw nu om myjobuit te voeren.

  5. Controleer de console-uitvoer op status. Wanneer de post-build-actie de buildartefacten uploadt, worden statusberichten voor Azure-opslag 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 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 in kleine letters geschreven (en hebben hoofdlettergevoeligheid) in Azure-opslag.

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 Pipeline van de taakconfiguratie het Pipeline script 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 blobs die u verwachtte succesvol zijn gedownload.

Volgende stappen