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
- abonnement Azure: si vous n’avez pas d’abonnement Azure, créez un compte Azure gratuit avant de commencer.
- serveur Jenkins: si aucun serveur Jenkins n’est installé, 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 de stockage.
Ajouter des informations d’identification Azure nécessaires pour exécuter Azure CLI
Accédez au portail Jenkins.
Dans le menu, sélectionnez Gérer jenkins.
Sélectionnez Gérer les informations d’identification.
Sélectionnez le domaine global.
Sélectionnez Ajouter des informations d’identification.
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.
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.
Dans le tableau de bord Jenkins, sélectionnez nouvel élément.
Nommez le travail myjob, sélectionnez Pipeline, puis cliquez sur OK.
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 ''' } } } } } }
Sélectionnez Build Now (Générer maintenant) pour exécuter myjob.
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.
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 :Une fois le travail correctement terminé, examinez les artefacts de build en ouvrant l’objet blob public :
- Connectez-vous au portail Azure .
- Sélectionnez Stockage.
- Sélectionnez le nom du compte de stockage que vous avez utilisé pour Jenkins.
- Sélectionnez Conteneurs.
- Sélectionnez le conteneur nommé myjob, dans la liste des blobs.
- Vous devez voir les deux fichiers suivants : hello.txt et date.txt.
- Copiez l’URL de l’un de ces éléments et collez-la dans votre navigateur.
- 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.
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 ''' } } } } }
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.