Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pipeline {
- agent any
- stages {
- stage('SonarQube Analysis') {
- steps {
- sh 'sonar-scanner \
- -Dsonar.host.url=https://sonarqube.awesome-app.com \
- -Dsonar.login=$SONAR_TOKEN \
- -Dsonar.projectKey=my-web-app \
- -Dsonar.sources=. \
- -Dsonar.java.binaries=.'
- }
- }
- stage('Build') {
- steps {
- sh 'docker build -t my-web-app .'
- }
- }
- stage('Push') {
- steps {
- sh 'docker login docker.pkg.github.com -u $GITHUB_USERNAME -p $GITHUB_TOKEN'
- sh 'docker tag my-web-app docker.pkg.github.com/$GITHUB_USERNAME/my-web-app:$BUILD_NUMBER'
- sh 'docker push docker.pkg.github.com/$GITHUB_USERNAME/my-web-app:$BUILD_NUMBER'
- }
- }
- stage('Deploy Green') {
- steps {
- sh 'kubectl apply -f green-deployment.yaml'
- sh 'kubectl rollout status deployment/green-deployment'
- sh 'kubectl expose deployment green-deployment --type=LoadBalancer --name=green-service'
- }
- }
- stage('Test Green') {
- steps {
- sh 'curl https://green-service.com:443'
- }
- }
- stage('Switch Traffic') {
- when {
- expression { return env.SWITCH_TRAFFIC == 'true' }
- }
- steps {
- sh 'kubectl apply -f blue-green-service.yaml'
- }
- }
- stage('Deploy Blue') {
- when {
- expression { return env.SWITCH_TRAFFIC == 'true' }
- }
- steps {
- sh 'kubectl apply -f blue-deployment.yaml'
- sh 'kubectl rollout status deployment/blue-deployment'
- sh 'kubectl expose deployment blue-deployment --type=LoadBalancer --name=blue-service'
- }
- }
- stage('Test Blue') {
- when {
- expression { return env.SWITCH_TRAFFIC == 'true' }
- }
- steps {
- sh 'curl https://blue-service.com:443'
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment