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
- Azure-prenumeration: Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
- Jenkins-server: Om du inte har en Jenkins-server installerad skapar du en Jenkins-server i Azure.
- Azure CLI: Installera Azure CLI (version 2.0.67 eller senare) på Jenkins-servern.
- Azure Storage-konto: Om du inte redan har ett lagringskonto skapar du ett lagringskonto.
Lägg till Azure-autentiseringsuppgifter som krävs för att köra Azure CLI
Bläddra till Jenkins-portalen.
Välj Hantera Jenkins på menyn.
Välj Hantera autentiseringsuppgifter.
Välj den globala domänen.
Välj Lägg till autentiseringsuppgifter.
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ö.
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.
På Jenkins-instrumentpanelen väljer du Nytt objekt.
Ge jobbet namnet myjob, välj Pipeline och välj sedan OK.
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 ''' } } } } } }
Välj Skapa nu för att köra mitt jobb.
Granska konsolens utdata för status. När åtgärden efter bygget laddar upp byggartefakterna skrivs statusmeddelanden för Azure Storage till konsolen.
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:När jobbet har slutförts undersöker du byggartefakterna genom att öppna den offentliga bloben:
- Logga in på Azure-portalen.
- Välj Storage.
- Välj det lagringskontonamn som du använde för Jenkins.
- Välj Containrar.
- Välj containern med namnet myjob i listan med blobar.
- Du bör se följande två filer: hello.txt och date.txt.
- Kopiera URL:en för något av dessa objekt och klistra in den i webbläsaren.
- 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.
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 ''' } } } } }
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.