gitreef

A GIT over SSH server implemented using fish.
Log | Files | Refs | README | LICENSE

Jenkinsfile (2812B)


      1 pipeline {
      2   agent { 
      3     label 'docker' 
      4   }
      5   triggers { 
      6     pollSCM('H/5 * * * *') // every ~5 minutes
      7     cron('H 3 * * 0') // every week once
      8   } 
      9   
     10   // 👇 Fill these for your setup
     11   environment {
     12   // Project
     13     PROJECT         = 'gitreef'
     14     GIT_URL         = "/var/git/${PROJECT}.git"
     15     GIT_BRANCH      = 'trunk'
     16     GIT_CREDENTIALS = ''
     17     // Docker
     18     REGISTRY        = 'docker.it-jaros.com'
     19     PLATFORMS       = 'linux/arm64/v8,linux/amd64'
     20     IMAGE_NAME      = "${REGISTRY}/${PROJECT}"
     21     DOCKER_HUB      = "jarlucmat/${PROJECT}"
     22     ALPINE_VERSION  = 'latest'
     23     // Maven
     24   }
     25 
     26   stages {
     27     stage('Checkout') {
     28       steps {
     29         script {
     30           if (env.GIT_CREDENTIALS?.trim()) {
     31             checkout([$class: 'GitSCM',
     32               branches: [[name: "*/${GIT_BRANCH}"]],
     33               userRemoteConfigs: [[url: GIT_URL, credentialsId: GIT_CREDENTIALS]],
     34 	    ])
     35           } else {
     36             git branch: GIT_BRANCH, url: GIT_URL
     37           }
     38         }
     39       }
     40     }
     41 
     42     stage('Extract vars') {
     43       steps {
     44         script {
     45           env.GIT_SHA = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
     46           env.APP_VERSION = sh(script: "cat src/version", returnStdout: true).trim()
     47         }
     48       }
     49     }
     50 
     51     stage('Docker buildx (multi-arch)') {
     52       steps {
     53         withCredentials([
     54           usernamePassword(
     55             credentialsId: 'docker',
     56             usernameVariable: 'DOCKER_USER',
     57             passwordVariable: 'DOCKER_PASS'
     58           ),
     59           usernamePassword(
     60               credentialsId: 'docker-hub',
     61               usernameVariable: 'DOCKER_HUB_USER',
     62               passwordVariable: 'DOCKER_HUB_PASS'
     63           )
     64         ]) {
     65           sh '''
     66             docker version
     67             docker buildx version
     68             docker buildx use jenkins || docker buildx create --name jenkins --driver docker-container --use
     69             docker buildx inspect --bootstrap
     70 
     71             echo "$DOCKER_PASS" | docker login $REGISTRY -u "$DOCKER_USER" --password-stdin
     72             echo "$DOCKER_HUB_PASS" | docker login -u "$DOCKER_HUB_USER" --password-stdin
     73     
     74             DOCKER_BUILDKIT=1 docker buildx build \
     75               --platform ${PLATFORMS} \
     76 	      --build-arg APP_VERSION=${APP_VERSION} \
     77 	      --build-arg ALPINE_VERSION=${ALPINE_VERSION} \
     78               -t ${IMAGE_NAME}:${GIT_SHA} \
     79               -t ${DOCKER_HUB}:${GIT_SHA} \
     80               -t ${IMAGE_NAME}:${APP_VERSION} \
     81               -t ${DOCKER_HUB}:${APP_VERSION} \
     82               -t ${IMAGE_NAME}:${APP_VERSION}-alpine${ALPINE_VERSION} \
     83               -t ${DOCKER_HUB}:${APP_VERSION}-alpine${ALPINE_VERSION} \
     84               -t ${IMAGE_NAME}:latest \
     85               -t ${DOCKER_HUB}:latest \
     86 	      --push \
     87               .
     88           '''
     89         }
     90       }
     91     }
     92   }
     93 }