100 lines
3.2 KiB
Groovy
100 lines
3.2 KiB
Groovy
// This Jenkinsfile defines a declarative pipeline
|
|
pipeline {
|
|
|
|
tools {
|
|
nodejs 'node'
|
|
}
|
|
|
|
options {
|
|
disableConcurrentBuilds()
|
|
}
|
|
agent any
|
|
|
|
// Defines the sequence of stages that will be executed
|
|
stages {
|
|
// This stage checks out the source code from the SCM (Source Code Management) system
|
|
stage('Checkout') {
|
|
steps {
|
|
// This command checks out the source code from the SCM into the Jenkins workspace
|
|
checkout scm
|
|
}
|
|
}
|
|
stage('Build') {
|
|
steps {
|
|
sh 'yarn install --no-progress'
|
|
sh 'npm run ng build --prod'
|
|
}
|
|
}
|
|
|
|
stage('Docker Build') {
|
|
steps {
|
|
sh 'docker build -t upquark/swiss-client:latest -t upquark/swiss-client:${BUILD_NUMBER} .'
|
|
}
|
|
}
|
|
|
|
stage('Push the Docker Image to DockerHub') {
|
|
steps {
|
|
script {
|
|
withCredentials([string(credentialsId: 'c7783e4f-2f79-482f-885f-dfb39f8c02d3', variable: 'docker_hub')]) {
|
|
sh 'docker login -u upquark -p ${docker_hub}'
|
|
}
|
|
sh 'docker push upquark/swiss-client:latest'
|
|
sh 'docker push upquark/swiss-client:${BUILD_NUMBER}'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Deploy to Kubernetes') {
|
|
steps {
|
|
script {
|
|
kubeconfig(credentialsId: 'k3s-kubeconfig') {
|
|
sh 'cat k8s/deployment.yaml | sed "s/latest/$BUILD_NUMBER/g" | kubectl apply -n swiss -f -'
|
|
sh 'kubectl apply -f k8s/service.yaml -n swiss'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage('Checkout test') {
|
|
steps {
|
|
// This command checks out the source code from the SCM into the Jenkins workspace
|
|
checkout scm
|
|
}
|
|
}
|
|
stage('Build test') {
|
|
steps {
|
|
sh 'yarn install --no-progress'
|
|
sh 'npm run ng build --configuration test'
|
|
}
|
|
}
|
|
|
|
stage('Docker Build test') {
|
|
steps {
|
|
sh 'docker build -t upquark/swiss-client-test:latest -t upquark/swiss-client-test:${BUILD_NUMBER} .'
|
|
}
|
|
}
|
|
|
|
stage('Push the Docker Image to DockerHub test') {
|
|
steps {
|
|
script {
|
|
withCredentials([string(credentialsId: 'c7783e4f-2f79-482f-885f-dfb39f8c02d3', variable: 'docker_hub')]) {
|
|
sh 'docker login -u upquark -p ${docker_hub}'
|
|
}
|
|
sh 'docker push upquark/swiss-client-test:latest'
|
|
sh 'docker push upquark/swiss-client-test:${BUILD_NUMBER}'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Deploy to Kubernetes test') {
|
|
steps {
|
|
script {
|
|
kubeconfig(credentialsId: 'k3s-kubeconfig') {
|
|
sh 'cat k8s/deployment-test.yaml | sed "s/latest/$BUILD_NUMBER/g" | kubectl apply -n swiss -f -'
|
|
sh 'kubectl apply -f k8s/service-test.yaml -n swiss'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|