diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..3267d52 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,81 @@ +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() + } + } +} diff --git a/smarketing-java/member/Jenkinsfile b/smarketing-java/member/Jenkinsfile new file mode 100644 index 0000000..3267d52 --- /dev/null +++ b/smarketing-java/member/Jenkinsfile @@ -0,0 +1,81 @@ +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() + } + } +}