From c68b0820a43133a6cdce3b04f68e83bb61ac3948 Mon Sep 17 00:00:00 2001 From: Matthias Lucas Jaros Date: Sat, 11 Jul 2026 11:45:08 +0200 Subject: Added Jenkinsfile and version --- Jenkinsfile | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/version | 1 + 2 files changed, 94 insertions(+) create mode 100644 Jenkinsfile create mode 100644 src/version diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..bc733ee --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,93 @@ +pipeline { + agent { + label 'docker' + } + triggers { + pollSCM('H/5 * * * *') // every ~5 minutes + cron('H 3 * * 0') // every week once + } + + // 👇 Fill these for your setup + environment { + // Project + PROJECT = 'cgit' + GIT_URL = "/var/git/${PROJECT}.git" + GIT_BRANCH = 'trunk' + GIT_CREDENTIALS = '' + // Docker + REGISTRY = 'docker.it-jaros.com' + PLATFORMS = 'linux/arm64/v8,linux/amd64' + IMAGE_NAME = "${REGISTRY}/${PROJECT}" + DOCKER_HUB = "jarlucmat/${PROJECT}" + ALPINE_VERSION = 'latest' + // Maven + } + + stages { + stage('Checkout') { + steps { + script { + if (env.GIT_CREDENTIALS?.trim()) { + checkout([$class: 'GitSCM', + branches: [[name: "*/${GIT_BRANCH}"]], + userRemoteConfigs: [[url: GIT_URL, credentialsId: GIT_CREDENTIALS]], + ]) + } else { + git branch: GIT_BRANCH, url: GIT_URL + } + } + } + } + + stage('Extract vars') { + steps { + script { + env.GIT_SHA = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim() + env.APP_VERSION = sh(script: "cat src/version", returnStdout: true).trim() + } + } + } + + stage('Docker buildx (multi-arch)') { + steps { + withCredentials([ + usernamePassword( + credentialsId: 'docker', + usernameVariable: 'DOCKER_USER', + passwordVariable: 'DOCKER_PASS' + ), + usernamePassword( + credentialsId: 'docker-hub', + usernameVariable: 'DOCKER_HUB_USER', + passwordVariable: 'DOCKER_HUB_PASS' + ) + ]) { + sh ''' + docker version + docker buildx version + docker buildx use jenkins || docker buildx create --name jenkins --driver docker-container --use + docker buildx inspect --bootstrap + + echo "$DOCKER_PASS" | docker login $REGISTRY -u "$DOCKER_USER" --password-stdin + echo "$DOCKER_HUB_PASS" | docker login -u "$DOCKER_HUB_USER" --password-stdin + + DOCKER_BUILDKIT=1 docker buildx build \ + --platform ${PLATFORMS} \ + --build-arg APP_VERSION=${APP_VERSION} \ + --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ + -t ${IMAGE_NAME}:${GIT_SHA} \ + -t ${DOCKER_HUB}:${GIT_SHA} \ + -t ${IMAGE_NAME}:${APP_VERSION} \ + -t ${DOCKER_HUB}:${APP_VERSION} \ + -t ${IMAGE_NAME}:${APP_VERSION}-alpine${ALPINE_VERSION} \ + -t ${DOCKER_HUB}:${APP_VERSION}-alpine${ALPINE_VERSION} \ + -t ${IMAGE_NAME}:latest \ + -t ${DOCKER_HUB}:latest \ + --push \ + . + ''' + } + } + } + } +} diff --git a/src/version b/src/version new file mode 100644 index 0000000..730d79a --- /dev/null +++ b/src/version @@ -0,0 +1 @@ +1.0-SNAPSHOT -- cgit v1.3.1