Files
java-maven-app/Jenkinsfile
Nana Janashia 3559bee477 add ecr push
2020-12-05 16:06:13 +01:00

77 lines
2.9 KiB
Groovy

#!/usr/bin/env groovy
pipeline {
agent any
tools {
maven 'Maven'
}
environment {
ECR_REPO_URL = '664574038682.dkr.ecr.eu-west-3.amazonaws.com'
IMAGE_REPO = "${ECR_REPO_URL}/java-maven-app"
}
stages {
stage('increment version') {
steps {
script {
echo 'incrementing app version...'
sh 'mvn build-helper:parse-version versions:set \
-DnewVersion=\\\${parsedVersion.majorVersion}.\\\${parsedVersion.minorVersion}.\\\${parsedVersion.nextIncrementalVersion} \
versions:commit'
def matcher = readFile('pom.xml') =~ '<version>(.+)</version>'
def version = matcher[0][1]
env.IMAGE_NAME = "$version-$BUILD_NUMBER"
echo "############ ${IMAGE_REPO}"
}
}
}
stage('build app') {
steps {
script {
echo "building the application..."
sh 'mvn clean package'
}
}
}
stage('build image') {
steps {
script {
echo "building the docker image..."
withCredentials([usernamePassword(credentialsId: 'ecr-credentials', passwordVariable: 'PASS', usernameVariable: 'USER')]) {
sh "docker build -t ${IMAGE_REPO}:${IMAGE_NAME} ."
sh "echo $PASS | docker login -u $USER --password-stdin ${IMAGE_REPO}"
sh "docker push ${IMAGE_REPO}:${IMAGE_NAME}"
}
}
}
}
stage('deploy') {
environment {
AWS_ACCESS_KEY_ID = credentials('jenkins_aws_access_key_id')
AWS_SECRET_ACCESS_KEY = credentials('jenkins_aws_secret_access_key')
APP_NAME = 'java-maven-app'
}
steps {
script {
echo 'deploying docker image...'
sh 'envsubst < kubernetes/deployment.yaml | kubectl apply -f -'
sh 'envsubst < kubernetes/service.yaml | kubectl apply -f -'
}
}
}
stage('commit version update') {
steps {
script {
withCredentials([usernamePassword(credentialsId: 'gitlab-credentials', passwordVariable: 'PASS', usernameVariable: 'USER')]) {
sh 'git config user.email "jenkins@example.com"'
sh 'git config user.name "Jenkins"'
sh "git remote set-url origin https://${USER}:${PASS}@gitlab.com/nanuchi/java-maven-app.git"
sh 'git add .'
sh 'git commit -m "ci: version bump"'
sh 'git push origin HEAD:jenkins-jobs'
}
}
}
}
}
}