Partager via


Tutoriel : Utiliser le stockage Azure pour les artefacts de build

Important

De nombreux services Azure ont des plug-ins Jenkins. Certains de ces plug-ins seront hors support à compter du 29 février 2024. Azure CLI est le moyen actuellement recommandé d’intégrer Jenkins aux services Azure. Pour plus d’informations, consultez l’article plug-ins Jenkins pour Azure.

Cet article explique comment utiliser le stockage Blob comme référentiel d’artefacts de build créés par une solution d’intégration continue Jenkins (CI) ou comme source de fichiers téléchargeables à utiliser dans un processus de génération. L’un des scénarios où vous trouveriez cette solution utile est que vous codez dans un environnement de développement agile (à l’aide de Java ou d’autres langages), que les builds s’exécutent en fonction de l’intégration continue et que vous avez besoin d’un référentiel pour vos artefacts de build, afin que vous puissiez, par exemple, les partager avec d’autres membres de l’organisation, vos clients ou gérer une archive. Un autre scénario est lorsque votre processus de compilation lui-même nécessite d'autres fichiers, par exemple, les dépendances à télécharger dans le cadre de l'entrée de compilation.

Conditions préalables

Ajouter des informations d’identification Azure nécessaires pour exécuter Azure CLI

  1. Accédez au portail Jenkins.

  2. Dans le menu, sélectionnez Gérer jenkins.

  3. Sélectionnez Gérer les informations d’identification.

  4. Sélectionnez le domaine global.

  5. Sélectionnez Ajouter des informations d’identification.

  6. Renseignez les champs obligatoires comme suit :

    • Catégorie: sélectionnez nom d'utilisateur avec le mot de passe.
    • Nom d’utilisateur: spécifiez la appId du principal de service.
    • Mot de passe: spécifiez la password du principal de service.
    • ID: Spécifiez un identifiant d'authentification, comme azuresp.
    • Description: si vous le souhaitez, incluez une description explicite pour votre environnement.
  7. Sélectionnez OK pour créer les informations d’identification.

Créer un travail de pipeline pour charger des artefacts de build

Les étapes suivantes vous guident dans la création d’un travail de pipeline. Le travail de pipeline crée plusieurs fichiers et charge les fichiers dans votre compte de stockage à l’aide d’Azure CLI.

  1. Dans le tableau de bord Jenkins, sélectionnez nouvel élément.

  2. Nommez le travail myjob, sélectionnez Pipeline, puis cliquez sur OK.

  3. Dans la section Pipeline de la configuration du travail, sélectionnez Pipeline script (Script de pipeline), puis collez le code suivant dans Script. Modifiez les espaces réservés pour qu’ils correspondent aux valeurs de votre environnement.

    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. Sélectionnez Build Now (Générer maintenant) pour exécuter myjob.

  5. Examinez la sortie de la console pour obtenir l’état. Lorsque l’action post-build charge les artefacts de build, les messages d’état du stockage Azure sont écrits dans la console.

  6. Si vous rencontrez une erreur similaire à ce qui suit, cela signifie que vous devez accorder l’accès au niveau du conteneur : ValidationError: You do not have the required permissions needed to perform this operation. Si vous recevez ce message d’erreur, reportez-vous aux articles suivants pour résoudre :

  7. Une fois le travail correctement terminé, examinez les artefacts de build en ouvrant l’objet blob public :

    1. Connectez-vous au portail Azure .
    2. Sélectionnez Stockage.
    3. Sélectionnez le nom du compte de stockage que vous avez utilisé pour Jenkins.
    4. Sélectionnez Conteneurs.
    5. Sélectionnez le conteneur nommé myjob, dans la liste des blobs.
    6. Vous devez voir les deux fichiers suivants : hello.txt et date.txt.
    7. Copiez l’URL de l’un de ces éléments et collez-la dans votre navigateur.
    8. Vous voyez le fichier texte qui a été chargé en tant qu’artefact de build.

    points clés:

    • Les noms de conteneurs et les noms d’objets blob sont en minuscules (et sensibles à la casse) dans le stockage Azure.

Créer un travail de pipeline pour télécharger depuis Stockage Blob Azure

Voici les étapes pour configurer une tâche de pipeline afin de télécharger des éléments à partir du Stockage Blob Azure.

  1. Dans la section Pipeline de la configuration du travail, sélectionnez Pipeline script (Script de pipeline), puis collez le code suivant dans Script. Modifiez les espaces réservés pour qu’ils correspondent aux valeurs de votre environnement.

    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. Après avoir exécuté une build, vérifiez la sortie de la console d’historique de build. Vous pouvez également examiner votre emplacement de téléchargement pour vérifier si les blocs attendus ont été correctement téléchargés.

Étapes suivantes