From cf4b854cf0bcff8729e8ce9632473513e59e5adf Mon Sep 17 00:00:00 2001 From: lenape Date: Sun, 22 Jun 2025 03:09:01 +0000 Subject: [PATCH] updated Jenkinsfile --- Jenkinsfile | 71 +++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index cd9ebe0..1266643 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,57 +1,64 @@ pipeline { agent any - environment { - ACR_NAME = "demoacr" - IMAGE_TAG = "${ACR_NAME}.azurecr.io/skennen:${env.BUILD_NUMBER}" - RG_NAME = "Prod-Native-American-Empires" - ACA_NAME = "skennen" - AZ_SUB_ID = "1d363cb6-5669-42c2-98d3-5b9a1604b797" - TENANT_ID = "your-tenant-id" - CLIENT_ID = credentials('azure-sp-client-id') - CLIENT_SECRET = credentials('azure-sp-client-secret') - ACR_USERNAME = credentials('acr-username') - ACR_PASSWORD = credentials('acr-password') + // Fetch the ACR login server from Terraform outputs + ACR_LOGIN_SERVER = sh(script: 'terraform output -raw container_registry_url', returnStdout: true).trim() + RESOURCE_GROUP = 'Prod-Native-American-Empires' + CONTAINER_APP = 'skennen' } - stages { stage('Checkout') { steps { checkout scm } } - - stage('Build Image') { + stage('Build Docker Image') { steps { - sh "docker build -t ${IMAGE_TAG} ." + script { + // Build the .NET 8 Minimal API image with a build number tag and latest + docker.build("skennen:${env.BUILD_NUMBER}", '-f dotnet8-minimal-api/Dockerfile dotnet8-minimal-api') + } } } - - stage('Push Image') { + stage('Tag & Push to ACR') { steps { - sh ''' - echo ${ACR_PASSWORD} | docker login ${ACR_NAME}.azurecr.io --username ${ACR_USERNAME} --password-stdin - docker push ${IMAGE_TAG} - ''' - } - } - - stage('Deploy to Azure Container App') { - steps { - withCredentials([usernamePassword(credentialsId: 'azure-sp', passwordVariable: 'AZ_PASS', usernameVariable: 'AZ_USER')]) { + withCredentials([usernamePassword( + credentialsId: 'acr-creds', + usernameVariable: 'ACR_USER', + passwordVariable: 'ACR_PASS')]) { sh ''' - az login --service-principal -u $CLIENT_ID -p $CLIENT_SECRET --tenant $TENANT_ID - az account set --subscription $AZ_SUB_ID - az containerapp update --name $ACA_NAME --resource-group $RG_NAME --image $IMAGE_TAG --revision-suffix build-${BUILD_NUMBER} + docker login $ACR_LOGIN_SERVER -u $ACR_USER -p $ACR_PASS + docker tag skennen:${BUILD_NUMBER} $ACR_LOGIN_SERVER/skennen:${BUILD_NUMBER} + docker tag skennen:${BUILD_NUMBER} $ACR_LOGIN_SERVER/skennen:latest + docker push $ACR_LOGIN_SERVER/skennen:${BUILD_NUMBER} + docker push $ACR_LOGIN_SERVER/skennen:latest + ''' + } + } + } + stage('Deploy to Container App') { + steps { + withCredentials([azureServicePrincipal( + credentialsId: 'azure-sp', + subscriptionIdVariable: 'AZ_SUB', + clientIdVariable: 'AZ_CLIENT_ID', + clientSecretVariable: 'AZ_CLIENT_SECRET', + tenantIdVariable: 'AZ_TENANT_ID')]) { + sh ''' + az login --service-principal -u $AZ_CLIENT_ID -p $AZ_CLIENT_SECRET --tenant $AZ_TENANT_ID + az account set --subscription $AZ_SUB + az containerapp update \ + --name $CONTAINER_APP \ + --resource-group $RESOURCE_GROUP \ + --image $ACR_LOGIN_SERVER/skennen:latest ''' } } } } - post { always { cleanWs() } } -} \ No newline at end of file +}