Självstudie: Använda Azure Storage för att skapa artefakter

Viktigt!

Många Azure-tjänster har Jenkins-plugin-program. Vissa av dessa plugin-program kommer att vara utan stöd från och med den 29 februari 2024. Azure CLI är det för närvarande rekommenderade sättet att integrera Jenkins med Azure-tjänster. Mer information finns i artikeln Jenkins-plugin-program för Azure.

Den här artikeln visar hur du använder Blob Storage som en lagringsplats för byggartefakter som skapats av en Jenkins-lösning för kontinuerlig integrering (CI) eller som en källa till nedladdningsbara filer som ska användas i en byggprocess. Ett av de scenarier där du skulle finna den här lösningen användbar är när du kodar i en flexibel utvecklingsmiljö (med Java eller andra språk), byggen körs baserat på kontinuerlig integrering och du behöver en lagringsplats för dina byggartefakter, så att du till exempel kan dela dem med andra organisationsmedlemmar, dina kunder eller underhålla ett arkiv. Ett annat scenario är när själva byggjobbet kräver andra filer, till exempel beroenden som ska laddas ned som en del av byggindata.

Förutsättningar

Lägg till Azure-autentiseringsuppgifter som krävs för att köra Azure CLI

  1. Bläddra till Jenkins-portalen.

  2. Välj Hantera Jenkins på menyn.

  3. Välj Hantera autentiseringsuppgifter.

  4. Välj den globala domänen.

  5. Välj Lägg till autentiseringsuppgifter.

  6. Fyll i de obligatoriska fälten på följande sätt:

    • Typ: Välj Användarnamn med lösenord.
    • Användarnamn: Ange appId tjänstens huvudnamn.
    • Lösenord: Ange password tjänstens huvudnamn.
    • ID: Ange en identifer för autentiseringsuppgifter, till exempel azuresp.
    • Beskrivning: Om du vill kan du inkludera en beskrivande beskrivning för din miljö.
  7. Välj OK för att skapa autentiseringsuppgifterna.

Skapa ett pipelinejobb för att ladda upp byggartefakter

Följande steg vägleder dig genom att skapa ett pipelinejobb. Pipelinejobbet skapar flera filer och laddar upp filerna till ditt lagringskonto med hjälp av Azure CLI.

  1. På Jenkins-instrumentpanelen väljer du Nytt objekt.

  2. Ge jobbet namnet myjob, välj Pipeline och välj sedan OK.

  3. I avsnittet Pipeline i jobbkonfigurationen väljer du Pipeline-skript och klistrar in följande i Skript. Redigera platshållarna för att matcha värdena för din miljö.

    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. Välj Skapa nu för att köra mitt jobb.

  5. Granska konsolens utdata för status. När åtgärden efter bygget laddar upp byggartefakterna skrivs statusmeddelanden för Azure Storage till konsolen.

  6. Om du får ett fel som liknar följande innebär det att du måste bevilja åtkomst på containernivå: ValidationError: You do not have the required permissions needed to perform this operation. Om du får det här felmeddelandet kan du läsa följande artiklar för att lösa problemet:

  7. När jobbet har slutförts undersöker du byggartefakterna genom att öppna den offentliga bloben:

    1. Logga in på Azure-portalen.
    2. Välj Storage.
    3. Välj det lagringskontonamn som du använde för Jenkins.
    4. Välj Containrar.
    5. Välj containern med namnet myjob i listan med blobar.
    6. Du bör se följande två filer: hello.txt och date.txt.
    7. Kopiera URL:en för något av dessa objekt och klistra in den i webbläsaren.
    8. Du ser textfilen som laddades upp som en kompileringsartefakt.

    Viktiga punkter:

    • Containernamn och blobnamn är gemener (och skiftlägeskänsliga) i Azure Storage.

Skapa ett pipelinejobb som ska laddas ned från Azure Blob Storage

Följande steg visar hur du konfigurerar ett pipelinejobb för att ladda ned objekt från Azure Blob Storage.

  1. I avsnittet Pipeline i jobbkonfigurationen väljer du Pipeline-skript och klistrar in följande i Skript. Redigera platshållarna för att matcha värdena för din miljö.

    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. När du har kört en version kontrollerar du utdata från bygghistorikkonsolen. Du kan också titta på nedladdningsplatsen för att se om de blobar som du förväntade dig har laddats ned.

Nästa steg