Files
azure-production/Jenkinsfile
2025-06-22 16:23:59 +00:00

67 lines
2.1 KiB
Groovy

pipeline {
agent any
environment {
// 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 Docker Image') {
steps {
sh '''
docker build -t skennen:${BUILD_NUMBER} \
-f dotnet8-minimal-api/Dockerfile dotnet8-minimal-api
'''
}
}
stage('Tag & Push to ACR') {
steps {
withCredentials([usernamePassword(
credentialsId: 'acr-creds',
usernameVariable: 'ACR_USER',
passwordVariable: 'ACR_PASS')]) {
sh '''
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([
string(credentialsId: 'azure-subscription-id', variable: 'AZ_SUB'),
string(credentialsId: 'azure-client-id', variable: 'AZ_CLIENT_ID'),
string(credentialsId: 'azure-client-secret', variable: 'AZ_CLIENT_SECRET'),
string(credentialsId: 'azure-tenant-id', variable: 'AZ_TENANT_ID')
]) {
sh '''
echo "Logging in to Azure..."
az login --service-principal -u $AZ_CLIENT_ID -p $AZ_CLIENT_SECRET --tenant $AZ_TENANT_ID
echo "Setting subscription..."
az account set --subscription $AZ_SUB
echo "Updating container app..."
az containerapp update \
--name $CONTAINER_APP \
--resource-group $RESOURCE_GROUP \
--image $ACR_LOGIN_SERVER/skennen:latest
'''
}
}
}
}
post {
always {
cleanWs()
}
}
}