smarketing-backend/Jenkinsfile
2025-06-16 15:59:43 +09:00

82 lines
2.6 KiB
Groovy

pipeline {
agent any
environment {
ACR_LOGIN_SERVER = 'acrsmarketing17567.azurecr.io'
IMAGE_NAME = 'member'
MANIFEST_REPO = 'https://github.com/won-ktds/smarketing-manifest.git'
MANIFEST_PATH = 'member/deployment.yaml'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
dir('member') {
sh './gradlew clean build -x test'
}
}
}
stage('Test') {
steps {
dir('member') {
sh './gradlew test'
}
}
}
stage('Build Docker Image') {
steps {
script {
def imageTag = "${BUILD_NUMBER}-${env.GIT_COMMIT.substring(0,8)}"
def fullImageName = "${ACR_LOGIN_SERVER}/${IMAGE_NAME}:${imageTag}"
dir('member') {
sh "docker build -t ${fullImageName} ."
}
withCredentials([usernamePassword(credentialsId: 'acr-credentials', usernameVariable: 'ACR_USERNAME', passwordVariable: 'ACR_PASSWORD')]) {
sh "docker login ${ACR_LOGIN_SERVER} -u ${ACR_USERNAME} -p ${ACR_PASSWORD}"
sh "docker push ${fullImageName}"
}
env.IMAGE_TAG = imageTag
env.FULL_IMAGE_NAME = fullImageName
}
}
}
stage('Update Manifest') {
steps {
withCredentials([usernamePassword(credentialsId: 'github-credentials', usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_TOKEN')]) {
sh '''
git clone https://${GIT_TOKEN}@github.com/won-ktds/smarketing-manifest.git manifest-repo
cd manifest-repo
# Update image tag in deployment.yaml
sed -i "s|image: .*|image: ${FULL_IMAGE_NAME}|g" ${MANIFEST_PATH}
git config user.email "jenkins@smarketing.com"
git config user.name "Jenkins"
git add .
git commit -m "Update ${IMAGE_NAME} image to ${IMAGE_TAG}"
git push origin main
'''
}
}
}
}
post {
always {
cleanWs()
}
}
}