updated Jenkinsfile
This commit is contained in:
71
Jenkinsfile
vendored
71
Jenkinsfile
vendored
@@ -1,57 +1,64 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent any
|
agent any
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
ACR_NAME = "demoacr"
|
// Fetch the ACR login server from Terraform outputs
|
||||||
IMAGE_TAG = "${ACR_NAME}.azurecr.io/skennen:${env.BUILD_NUMBER}"
|
ACR_LOGIN_SERVER = sh(script: 'terraform output -raw container_registry_url', returnStdout: true).trim()
|
||||||
RG_NAME = "Prod-Native-American-Empires"
|
RESOURCE_GROUP = 'Prod-Native-American-Empires'
|
||||||
ACA_NAME = "skennen"
|
CONTAINER_APP = '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')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Checkout') {
|
stage('Checkout') {
|
||||||
steps {
|
steps {
|
||||||
checkout scm
|
checkout scm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stage('Build Docker Image') {
|
||||||
stage('Build Image') {
|
|
||||||
steps {
|
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('Tag & Push to ACR') {
|
||||||
stage('Push Image') {
|
|
||||||
steps {
|
steps {
|
||||||
sh '''
|
withCredentials([usernamePassword(
|
||||||
echo ${ACR_PASSWORD} | docker login ${ACR_NAME}.azurecr.io --username ${ACR_USERNAME} --password-stdin
|
credentialsId: 'acr-creds',
|
||||||
docker push ${IMAGE_TAG}
|
usernameVariable: 'ACR_USER',
|
||||||
'''
|
passwordVariable: 'ACR_PASS')]) {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Deploy to Azure Container App') {
|
|
||||||
steps {
|
|
||||||
withCredentials([usernamePassword(credentialsId: 'azure-sp', passwordVariable: 'AZ_PASS', usernameVariable: 'AZ_USER')]) {
|
|
||||||
sh '''
|
sh '''
|
||||||
az login --service-principal -u $CLIENT_ID -p $CLIENT_SECRET --tenant $TENANT_ID
|
docker login $ACR_LOGIN_SERVER -u $ACR_USER -p $ACR_PASS
|
||||||
az account set --subscription $AZ_SUB_ID
|
docker tag skennen:${BUILD_NUMBER} $ACR_LOGIN_SERVER/skennen:${BUILD_NUMBER}
|
||||||
az containerapp update --name $ACA_NAME --resource-group $RG_NAME --image $IMAGE_TAG --revision-suffix build-${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 {
|
post {
|
||||||
always {
|
always {
|
||||||
cleanWs()
|
cleanWs()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user