Zelfstudie: Azure Storage gebruiken voor buildartefacten
Belangrijk
Veel Azure-services hebben Jenkins-in plug-ins. Sommige van deze in plug-ins worden vanaf 29 februari 2024 niet meer ondersteund. Azure CLI is de momenteel aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-in plug-ins voor Azure voor meer informatie.
In dit artikel wordt beschreven hoe u Blob Storage gebruikt als een opslagplaats met buildartefacten die zijn gemaakt door een Jenkins-oplossing voor continue integratie (CI) of als bron van downloadbare bestanden die in een bouwproces kunnen worden gebruikt. 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 leden van de organisatie, uw klanten of een archief kunt onderhouden. Een ander scenario is wanneer uw build-taak zelf andere bestanden vereist, bijvoorbeeld afhankelijkheden die moeten worden gedownload als onderdeel van de buildinvoer.
Vereisten
- Azure-abonnement:als u geen Azure-abonnement hebt, maakt u een gratis Azure-account voordat u begint.
- Jenkins-server:als u geen Jenkins-server hebt geïnstalleerd, maakt u een Jenkins-server in Azure.
- Azure CLI:installeer Azure CLI (versie 2.0.67 of hoger) op de Jenkins-server.
- Azure-opslagaccount:als u nog geen opslagaccount hebt, maakt u een Storage account.
Azure-referenties toevoegen die nodig zijn om Azure CLI uit te voeren
Blader naar de Jenkins-portal.
Selecteer Jenkins beheren in het menu.
Selecteer Referenties beheren.
Selecteer het globale domein.
Selecteer Referenties toevoegen.
Vul de vereiste velden als volgt in:
- Soort:selecteer Gebruikersnaam met wachtwoord.
- Gebruikersnaam:geef de van de service-principal op.
- Wachtwoord:geef de van de service-principal op.
- Id:geef een referentie-id op, zoals .
- Beschrijving:voeg eventueel een duidelijke beschrijving voor uw omgeving toe.
Selecteer OK om de referentie te maken.
Een pijplijn-taak maken om buildartefacten te uploaden
De volgende stappen begeleiden u bij het maken van een pijplijn-taak. De pijplijn-taak maakt verschillende bestanden en uploadt de bestanden naar uw opslagaccount met behulp van Azure CLI.
Selecteer nieuw item in het Jenkins-dashboard.
Noem de taak myjob,selecteer Pijplijnen selecteer vervolgens OK.
Selecteer in de sectie Pijplijn van de taakconfiguratie de optie Pijplijnscript en plak het volgende in Script. Bewerk de tijdelijke aanduidingen zo dat 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 ''' } } } } } }Selecteer Nu bouwen om mijn taak uit te voeren.
Bekijk de console-uitvoer op status. Wanneer met de actie na het bouwen de build-artefacten worden geüpload, worden statusberichten voor Azure Storage naar de console geschreven.
Als u een fout tegenkomt die vergelijkbaar is met het volgende, betekent dit dat u toegang moet verlenen op containerniveau: Als u dit foutbericht ontvangt, raadpleegt u de volgende artikelen om het probleem op te
ValidationError: You do not have the required permissions needed to perform this operation.lossen:Nadat de taak is voltooid, onderzoekt u de buildartefacten door de openbare blob te openen:
- Meld u aan bij de Azure-portal.
- Selecteer Opslag.
- Selecteer de naam van het opslagaccount dat u voor Jenkins hebt gebruikt.
- Selecteer Containers.
- Selecteer de container met de naam myjobin de lijst met blobs.
- Als het goed is, ziet u de volgende twee bestanden:hello.txt en date.txt.
- Kopieer de URL voor een van deze items en plak deze in uw browser.
- U ziet het tekstbestand dat is geüpload als een build-artefact.
Belangrijkste punten:
- Containernamen en blobnamen zijn kleine letters (en hoofdlettergevoelig) in Azure Storage.
Een pijplijn taak maken om te downloaden van Azure Blob Storage
De volgende stappen laten zien hoe u een pijplijn-taak configureert voor het downloaden van items uit Azure Blob Storage.
Selecteer in de sectie Pijplijn van de taakconfiguratie de optie Pijplijnscript en plak het volgende in Script. Bewerk de tijdelijke aanduidingen zo dat 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 ''' } } } } }Controleer na het uitvoeren van een build de uitvoer van de buildgeschiedenisconsole. U kunt ook uw downloadlocatie bekijken om te zien of de verwachte blobs zijn gedownload.