73 lines
1.9 KiB
Groovy
73 lines
1.9 KiB
Groovy
pipeline {
|
|
agent {
|
|
kubernetes {
|
|
yaml '''
|
|
apiVersion: v1
|
|
kind: Pod
|
|
spec:
|
|
serviceAccountName: jenkins-deployer
|
|
containers:
|
|
- name: gradle
|
|
image: eclipse-temurin:21-jdk
|
|
command: ["sleep"]
|
|
args: ["99d"]
|
|
- name: kaniko
|
|
image: gcr.io/kaniko-project/executor:debug
|
|
command: ["sleep"]
|
|
args: ["99d"]
|
|
volumeMounts:
|
|
- name: docker-config
|
|
mountPath: /kaniko/.docker
|
|
- name: kubectl
|
|
image: alpine/k8s:1.31.0
|
|
command: ["sleep"]
|
|
args: ["99d"]
|
|
volumes:
|
|
- name: docker-config
|
|
secret:
|
|
secretName: gitea-registry-cred
|
|
items:
|
|
- key: .dockerconfigjson
|
|
path: config.json
|
|
'''
|
|
}
|
|
}
|
|
environment {
|
|
IMAGE = "gitea.led.ectech.co.kr/ledmega/cstest:${env.BUILD_NUMBER}"
|
|
}
|
|
stages {
|
|
stage('Build') {
|
|
steps {
|
|
container('gradle') {
|
|
sh 'chmod +x gradlew && ./gradlew build --console=plain -x test'
|
|
}
|
|
}
|
|
}
|
|
stage('Image') {
|
|
steps {
|
|
container('kaniko') {
|
|
sh '''
|
|
/kaniko/executor \
|
|
--context `pwd` \
|
|
--dockerfile Dockerfile \
|
|
--destination ${IMAGE}
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
stage('Deploy') {
|
|
steps {
|
|
container('kubectl') {
|
|
sh '''
|
|
sed "s#IMAGE_PLACEHOLDER#${IMAGE}#" k8s/deployment.yaml > /tmp/deployment.yaml
|
|
kubectl apply -f /tmp/deployment.yaml
|
|
kubectl apply -f k8s/service.yaml
|
|
kubectl apply -f k8s/ingress.yaml
|
|
kubectl -n apps rollout status deployment/cstest --timeout=90s
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|