Jenkins declarative pipeline for kubernetes deployment and git/gitlab
// Uses Declarative syntax to run commands inside a container.
def project = 'node'
pipeline {
agent { label 'the_agent' }
environment {
project = 'node'
}
stages {
stage('check agent hostname') {
steps {
sh 'hostname'
}
}
stage('docker version') {
steps {
sh 'docker -v'
}
}
stage('git download projects') {
steps {
git branch: 'main', credentialsId: 'sid_obtained_from_jenkins_plugin', url: 'git@gitlab.com:blabla/blablabla.git'
}
}
stage('docker build') {
steps {
script {
sh 'whoami'
sh 'cd /home/jenkins/workspace/vbuild_the_agentfolder_node && docker build . -t thelocalregistry.locallab:45000/${project}:$BUILD_NUMBER'
}
}
}
stage('docker push') {
steps {
script {
sh 'docker push thelocalregistry.locallab:45000/${project}:$BUILD_NUMBER'
}
}
}
stage('create yaml deployment') {
steps {
script {
sh '''
cat << EOF > dp-${project}-$BUILD_NUMBER.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: be
name: dp-${project}
labels:
appname: ${project}
spec:
selector:
matchLabels:
appname: ${project}
template:
metadata:
labels:
appname: ${project}
spec:
containers:
- name: ${project}
imagePullPolicy: Always
image: thelocalregistry.locallab:45000/${project}:$BUILD_NUMBER
imagePullSecrets:
- name: be-regthelocalregistry.locallab
EOF
'''
}
}
}
stage('apply k8s') {
steps {
script {
sh 'kubectl apply -f dp-${project}-$BUILD_NUMBER.yaml'
}
}
}
}
}
Commenti
Posta un commento