diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..bc78cea05 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM eclipse-temurin:21-jdk-alpine AS builder + +WORKDIR /source + +COPY gradlew . +COPY build.gradle . +COPY settings.gradle . +COPY gradle ./gradle +RUN chmod 500 gradlew + +RUN ./gradlew dependencies --info --no-daemon + +COPY . . +RUN ./gradlew build --no-daemon -x test + +FROM eclipse-temurin:21-jre-alpine +WORKDIR /app +COPY --from=builder /source/build/libs/*.jar app.jar +EXPOSE 8080 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..b956d5529 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,47 @@ +pipeline { + agent any + + environment { + GIT_COMMIT_SHORT = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim() + DOCKER_HUB_USER = "m1kky8" + DOCKRHUB_CREDS = "580b959d-d40a-422f-a3d7-cf11b2ec7a4c" + + } + + stages { + stage('checkStyle') { + when { not {branch 'main' }} + steps { + sh './gradlew checkstyleMain' + } + } + + stage('Test') { + when { not {branch 'main' }} + steps { + sh './gradlew test' + } + } + + stage('Build') { + steps { + script { + def branch = env.BRANCH_NAME + def dockerRepo = (branch == 'main') ? 'main' : 'mr' + def imageTag = "${DOCKER_HUB_USER}/${dockerRepo}:${GIT_COMMIT_SHORT}" + + withCredentials([usernamePassword( + credentialsId: DOCKERHUB_CREDS, + usernameVariable: 'DOCKER_USER', + passwordVariable: 'DOCKER_PASS' + )]) { + echo "Logging in to Docker Hub..." + sh "echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin" + echo "Pushing Docker image to ${imageTag}" + sh "docker push ${imageTag}" + } + } + } + } + } +} diff --git a/settings.gradle b/settings.gradle index e60ee14fa..3ef2880e6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -rootProject.name = 'spring-petclinic' +rootProject.name = 'my-petclinic'