101 lines
2.9 KiB
Groovy
101 lines
2.9 KiB
Groovy
pipeline {
|
|
agent {
|
|
kubernetes {
|
|
yaml '''
|
|
apiVersion: v1
|
|
kind: Pod
|
|
spec:
|
|
containers:
|
|
- name: docker
|
|
image: docker:latest
|
|
command:
|
|
- cat
|
|
tty: true
|
|
volumeMounts:
|
|
- name: docker-sock
|
|
mountPath: /var/run/docker.sock
|
|
- name: kubectl
|
|
image: bitnami/kubectl:latest
|
|
command:
|
|
- cat
|
|
tty: true
|
|
volumes:
|
|
- name: docker-sock
|
|
hostPath:
|
|
path: /var/run/docker.sock
|
|
'''
|
|
}
|
|
}
|
|
|
|
environment {
|
|
REGISTRY_URL = 'git.winteraccess.id'
|
|
IMAGE_NAME = 'winter-access/backend_nam'
|
|
KUBE_CONFIG_ID = '1c8bd8d9-1590-468c-afc7-24495d4330dc'
|
|
CREDENTIALS_ID = '45c25ade-b1f8-455b-bdd6-e11ff141b70c'
|
|
DOCKERUSRPASS = '08063d26-0005-4942-9b87-9d819a13b973'
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout Code') {
|
|
steps {
|
|
git branch: 'dev', url: 'https://git.winteraccess.id/winter-access/backend_nam.git', credentialsId: "${CREDENTIALS_ID}"
|
|
}
|
|
}
|
|
|
|
stage('Get Short SHA') {
|
|
steps {
|
|
script {
|
|
env.SHORT_SHA = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Login to Docker Registry') {
|
|
steps {
|
|
container('docker'){
|
|
withCredentials([usernamePassword(credentialsId: "08063d26-0005-4942-9b87-9d819a13b973",
|
|
usernameVariable: 'DOCKER_USER',
|
|
passwordVariable: 'DOCKER_PASS')]) {
|
|
sh "docker login -u ${DOCKER_USER} -p ${DOCKER_PASS} ${REGISTRY_URL}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Build and Push Docker Image') {
|
|
steps {
|
|
container('docker') { // Runs in the Docker container inside Kubernetes
|
|
script {
|
|
def imageTag = "dev-${env.SHORT_SHA}"
|
|
sh """
|
|
docker build -t ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag} \
|
|
-t ${REGISTRY_URL}/${IMAGE_NAME}:dev \
|
|
-t ${REGISTRY_URL}/${IMAGE_NAME}:latest \
|
|
-f deploy/docker/Dockerfile .
|
|
|
|
docker push ${REGISTRY_URL}/${IMAGE_NAME}:${imageTag}
|
|
docker push ${REGISTRY_URL}/${IMAGE_NAME}:dev
|
|
docker push ${REGISTRY_URL}/${IMAGE_NAME}:latest
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Deploy to Kubernetes') {
|
|
steps {
|
|
kubernetesDeploy(
|
|
kubeconfigId: "${KUBE_CONFIG_ID}",
|
|
configs: 'deploy/kubernetes/dev.yaml',
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
cleanWs()
|
|
}
|
|
}
|
|
}
|