Tutoriel : Utiliser Stockage Azure pour les artefacts de build

Important

De nombreux services Azure disposent de plug-ins Jenkins. Certains de ces plug-ins ne seront plus pris en charge à partir du 29 février 2024. Azure CLI est la méthode actuellement recommandée pour intégrer Jenkins à des services Azure. Pour plus d’informations, reportez-vous à l’article Plug-ins Jenkins pour Azure.

Cet article explique comment utiliser Stockage Blob comme référentiel pour les artefacts de build créés par une solution d’intégration continue (CI) Jenkins ou comme source de fichiers téléchargeables dans un processus de génération. Cela peut s’avérer utile dans plusieurs scénarios, notamment quand vous codez dans un environnement de développement agile (avec Java ou d’autres langages), que les builds s’exécutent sur la base d’une intégration continue et que vous avez besoin d’un référentiel pour vos artefacts de build, de manière à pouvoir par exemple les partager avec d’autres membres de l’organisation ou avec vos clients, ou conserver une archive. Il existe un autre scénario dans lequel votre tâche de build proprement dite requiert d'autres fichiers, comme des dépendances à télécharger dans le cadre de l'entrée de génération.

Prérequis

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte Azure gratuit avant de commencer.
  • Serveur Jenkins : si vous n’avez pas installé de serveur Jenkins, créez un serveur Jenkins sur Azure.
  • Azure CLI : Installez Azure CLI (version 2.0.67 ou ultérieure) sur le serveur Jenkins.
  • Compte de stockage Azure : si vous n’avez pas encore de compte de stockage, créez un compte Stockage.

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

  1. Accédez au portail Jenkins.

  2. Dans le menu, sélectionnez Manage Jenkins (Gérer Jenkins).

  3. Sélectionnez Manage Credentials (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 :

    • Type : sélectionnez Nom d’utilisateur avec mot de passe.
    • Nom d’utilisateur : spécifiez le appId principal de service.
    • Mot de passe : spécifiez le password principal de service.
    • ID : spécifiez un identifer d’informations d’identification, tel que 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 les charge sur votre compte de stockage en utilisant Azure CLI.

  1. À partir du tableau de bord Jenkins, sélectionnez New Item (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 l'état dans la sortie de la console. Quand l’action post-build charge les artefacts de build, des messages d’état sont écrits dans la console pour le stockage Azure.

  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. Cliquez sur Conteneurs.
    5. Sélectionnez le conteneur nommé myjob, dans la liste des objets blob.
    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 le navigateur.
    8. Vous voyez le fichier texte qui a été chargé comme artefact de build.

    Points essentiels :

    • 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

Les étapes suivantes montrent comment configurer un travail de pipeline pour télécharger des éléments depuis 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 voir si les objets blob attendus ont été correctement téléchargés.

Étapes suivantes