adding workflow jenkins file
This commit is contained in:
parent
0972d45aa7
commit
16e15bf85d
|
|
@ -2,38 +2,104 @@ pipeline {
|
|||
agent any
|
||||
|
||||
environment {
|
||||
GIT_CREDENTIALS = '8242519c-ed9e-447a-ad63-1f8d7368cf68' // This should be the ID of your Jenkins credentials
|
||||
REGISTRY_URL = 'git.winteraccess.id'
|
||||
IMAGE_NAME = 'winter-access/backend_nam'
|
||||
KUBE_NAMESPACE = 'nam-backend-dev'
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: [[name: '*/dev']],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [],
|
||||
userRemoteConfigs: [[
|
||||
url: 'https://git.winteraccess.id/winter-access/backend_nam.git',
|
||||
credentialsId: env.GIT_CREDENTIALS
|
||||
]]
|
||||
])
|
||||
git branch: 'dev', url: 'https://git.winteraccess.id/winter-access/backend_nam.git'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build and Deploy') {
|
||||
stage('Get Short SHA') {
|
||||
steps {
|
||||
sh 'go mod tidy'
|
||||
sh 'go build -o myapp'
|
||||
sh 'sudo cp myapp /home/developer/backend_nam/'
|
||||
script {
|
||||
env.SHORT_SHA = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Restart Service') {
|
||||
stage('Login to Registry') {
|
||||
steps {
|
||||
sh 'sudo systemctl daemon-reload'
|
||||
sh 'sudo systemctl restart backend-nam'
|
||||
script {
|
||||
sh "echo ${env.REGISTRY_TOKEN} | docker login ${REGISTRY_URL} --username ${env.REGISTRY_USER} --password-stdin"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build Docker Image') {
|
||||
steps {
|
||||
script {
|
||||
sh """
|
||||
docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} \
|
||||
-t ${REGISTRY_URL}/${IMAGE_NAME}:dev \
|
||||
-t ${REGISTRY_URL}/${IMAGE_NAME}:latest \
|
||||
-f src/Dockerfile .
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Push Docker Image') {
|
||||
steps {
|
||||
script {
|
||||
sh """
|
||||
docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA}
|
||||
docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev
|
||||
docker push ${REGISTRY_URL}/${IMAGE_NAME}:latest
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('SonarQube Analysis') {
|
||||
steps {
|
||||
script {
|
||||
withSonarQubeEnv('SonarQube') {
|
||||
sh 'mvn sonar:sonar'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Setup Kubectl') {
|
||||
steps {
|
||||
script {
|
||||
sh 'kubectl version --client'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Create Kubeconfig') {
|
||||
steps {
|
||||
script {
|
||||
sh """
|
||||
mkdir -p \$HOME/.kube
|
||||
echo "${env.KUBECONFIG}" > \$HOME/.kube/config
|
||||
chmod 600 \$HOME/.kube/config
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Deploy to Kubernetes') {
|
||||
steps {
|
||||
script {
|
||||
sh """
|
||||
kubectl apply -f deploy/kubernetes/dev.yaml
|
||||
kubectl set image deployment/backend backend=${REGISTRY_URL}/${IMAGE_NAME}:dev-${SHORT_SHA} -n ${KUBE_NAMESPACE}
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
cleanWs()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue