67 lines
2.1 KiB
Groovy
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()
|
|
}
|
|
}
|
|
} |