pipeline { agent { docker { args '--group-add 992 -v /var/run/docker.sock:/var/run/docker.sock' image '303644228504.dkr.ecr.ap-southeast-1.amazonaws.com/jenkins-pipeline-agent:latest' registryCredentialsId "ecr:ap-southeast-1:aws-ec2-instance-iam-role" registryUrl "https://303644228504.dkr.ecr.ap-southeast-1.amazonaws.com" } } environment { HOME = '.' } stages { stage('Download source code from Git') { steps { script{ currentBuild.description = 'Step 1 of 6 Completed' println("GIT GIT_BRANCH: " + GIT_BRANCH) switch(GIT_BRANCH) { case "vapor/production": case "vapor/staging": case "vapor/development": git( url: 'https://gitlab.com/CIEFWorldwideSdnBhd/vapor-laravel-explore.git', credentialsId: 'gitlab-jenkins-localhost', branch: GIT_BRANCH ) break case "origin/test": git( url: 'https://gitlab.com/CIEFWorldwideSdnBhd/vapor-laravel-explore.git', credentialsId: 'gitlab-jenkins-localhost', branch: 'test' ) break } currentBuild.description = 'Step 2 of 6 Completed' } } } stage('Install') { steps { sh 'composer update' script{ currentBuild.description = 'Step 3 of 6 Completed' } } } stage('Tests') { steps { sh 'vendor/bin/phpunit tests/Unit' script{ currentBuild.description = 'Step 4 of 6 Completed' } } } stage('Deploy') { steps { script{ String gitCommitMessage = getCommitMessage() println("GIT CommitMessage: " + gitCommitMessage) println("GIT GIT_BRANCH: " + GIT_BRANCH) switch(GIT_BRANCH) { case "vapor/production": sh "vendor/bin/vapor deploy production --message='${gitCommitMessage}'" break case "vapor/staging": sh "vendor/bin/vapor deploy staging --message='${gitCommitMessage}'" break case "vapor/development": sh "vendor/bin/vapor deploy development --message='${gitCommitMessage}'" break case "origin/test": sh "vendor/bin/vapor deploy development --message='${gitCommitMessage}'" break } currentBuild.description = 'Step 5 of 6 Completed' } } } stage('Cleanup') { steps { script { try { sh 'docker image prune -a -f' } catch (Exception e) { echo "Error during cleanup: ${e.message}" } currentBuild.description = 'Step 6 of 6 Completed' } } } } } @NonCPS String getCommitMessage(){ commitMessage = " " for ( changeLogSet in currentBuild.changeSets){ for (entry in changeLogSet.getItems()){ commitMessage = entry.msg } } commitMessage = commitMessage.replace("'", "`") return commitMessage }