Update Jenkinsfile

This commit is contained in:
Marija Stopa 2025-01-17 13:30:13 +01:00 committed by GitHub
parent 166f9bc4fc
commit 4e50b1a557
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

73
Jenkinsfile vendored
View file

@ -1,76 +1,69 @@
pipeline {
agent {
docker {
image 'docker:20.10.8-dind' // Docker DinD image
args '--privileged -v /var/lib/docker:/var/lib/docker'
}
}
agent any
environment {
DOCKER_IMAGE_NAME = "mr-jenkins"
DOCKER_MAIN_REPO = "main-jenkins"
SHORT_COMMIT = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
DOCKERHUB_REPO = "marijastopa"
GIT_COMMIT_SHORT = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
DOCKER_CREDENTIALS_ID = 'dockerhub-credentials'
DOCKERHUB_USER = 'marijastopa'
DOCKERHUB_REPO_MAIN = 'main-jenkins'
DOCKERHUB_REPO_MR = 'mr-jenkins'
}
stages {
stage('Checkstyle') {
when {
not { branch 'main' } // merge request
not {
branch 'main'
}
}
steps {
echo 'Running Checkstyle...'
sh './mvnw checkstyle:checkstyle'
archiveArtifacts artifacts: 'target/site/checkstyle.html', fingerprint: true
archiveArtifacts artifacts: 'target/site/checkstyle.html', allowEmptyArchive: true
}
}
stage('Test') {
when {
not { branch 'main' } // merge request
not {
branch 'main'
}
}
steps {
echo 'Running Tests...'
sh './mvnw clean test'
}
}
stage('Build') {
when {
not { branch 'main' } // merge request
not {
branch 'main'
}
}
steps {
echo 'Building application...'
sh './mvnw clean package -DskipTests'
}
}
stage('Create Docker Image') {
steps {
echo 'Creating Docker Image...'
script {
def repoName = BRANCH_NAME == 'main' ? DOCKER_MAIN_REPO : DOCKER_IMAGE_NAME
def tag = "${DOCKERHUB_REPO}/${repoName}:${SHORT_COMMIT}"
sh "docker build -t ${tag} ."
}
}
}
stage('Push Docker Image') {
steps {
script {
def repoName = BRANCH_NAME == 'main' ? DOCKER_MAIN_REPO : DOCKER_IMAGE_NAME
def tag = "${DOCKERHUB_REPO}/${repoName}:${SHORT_COMMIT}"
withCredentials([usernamePassword(credentialsId: 'dockerhub-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
sh "echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin"
sh "docker push ${tag}"
def dockerRepo = BRANCH_NAME == 'main' ? DOCKERHUB_REPO_MAIN : DOCKERHUB_REPO_MR
def imageTag = "${DOCKERHUB_USER}/${dockerRepo}:${GIT_COMMIT_SHORT}"
withCredentials([usernamePassword(credentialsId: DOCKER_CREDENTIALS_ID, usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh """
echo "$PASSWORD" | docker login -u "$USERNAME" --password-stdin
docker build -t ${imageTag} .
docker push ${imageTag}
docker logout
"""
}
}
}
}
}
post {
always {
echo 'Pipeline completed.'
}
success {
echo 'Pipeline completed successfully.'
}
failure {
echo 'Pipeline failed.'
}
}
}