From bffac4d6a2be09d2a7d703a564f32dc5110287d4 Mon Sep 17 00:00:00 2001 From: "Nicholas St. Germain" Date: Tue, 5 Feb 2019 23:47:56 -0600 Subject: [PATCH] better jenkinsfile --- Jenkinsfile | 61 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 85ad7f0..d751aef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,16 +1,24 @@ pipeline { agent none environment { - REPOSITORY = "boerderij/varken" + DOCKER_REPO = "boerderij/varken" + GIT_REPO = 'Boerderij/Varken' + VERSION_FILE = "varken/__init__.py" + FLAKE_FILES = "Varken.py varken/*.py" + TAG = "" + GIT_TOKEN = credentials('github-jenkins-token') } stages { stage('Flake8') { agent { label 'amd64'} steps { - sh ''' - python3 -m venv venv && venv/bin/pip install flake8 && venv/bin/python -m flake8 --max-line-length 120 *.py varken/*.py + sh """ + python3 -m venv venv && venv/bin/pip install flake8 && venv/bin/python -m flake8 --max-line-length 120 ${FLAKE_FILES} rm -rf venv/ - ''' + """ + script { + TAG = sh(returnStdout: true, script: 'grep -i version ${VERSION_FILE} | cut -d" " -f3 | tr -d \\"').trim() + } } } stage('Docker Builds') { @@ -26,12 +34,11 @@ pipeline { steps { script { if (BRANCH_NAME == 'master') { - def tag = sh(returnStdout: true, script: 'grep -i version varken/__init__.py | cut -d" " -f3 | tr -d \\"').trim() - def image = docker.build("${REPOSITORY}:${tag}-amd64") + def image = docker.build("${DOCKER_REPO}:${TAG}-amd64") image.push() } else if (BRANCH_NAME == 'develop') { - def image = docker.build("${REPOSITORY}:develop-amd64") + def image = docker.build("${DOCKER_REPO}:develop-amd64") image.push() } } @@ -48,11 +55,10 @@ pipeline { steps { script { if (BRANCH_NAME == 'master') { - def tag = sh(returnStdout: true, script: 'grep -i version varken/__init__.py | cut -d" " -f3 | tr -d \\"').trim() - def image = docker.build("${REPOSITORY}:${tag}-arm", "-f Dockerfile.arm .") + def image = docker.build("${DOCKER_REPO}:${TAG}-arm", "-f Dockerfile.arm .") image.push() } else if (BRANCH_NAME == 'develop') { - def image = docker.build("${REPOSITORY}:develop-arm", "-f Dockerfile.arm .") + def image = docker.build("${DOCKER_REPO}:develop-arm", "-f Dockerfile.arm .") image.push() } } @@ -69,11 +75,10 @@ pipeline { steps { script { if (BRANCH_NAME == 'master') { - def tag = sh(returnStdout: true, script: 'grep -i version varken/__init__.py | cut -d" " -f3 | tr -d \\"').trim() - def image = docker.build("${REPOSITORY}:${tag}-arm64", "-f Dockerfile.arm64 .") + def image = docker.build("${DOCKER_REPO}:${TAG}-arm64", "-f Dockerfile.arm64 .") image.push() } else if (BRANCH_NAME == 'develop') { - def image = docker.build("${REPOSITORY}:develop-arm64", "-f Dockerfile.arm64 .") + def image = docker.build("${DOCKER_REPO}:develop-arm64", "-f Dockerfile.arm64 .") image.push() } } @@ -92,20 +97,30 @@ pipeline { steps { script { if (BRANCH_NAME == 'master') { - def tag = sh(returnStdout: true, script: 'grep -i version varken/__init__.py | cut -d" " -f3 | tr -d \\"').trim() - sh(script: "docker manifest create ${REPOSITORY}:${tag} ${REPOSITORY}:${tag}-amd64 ${REPOSITORY}:${tag}-arm64 ${REPOSITORY}:${tag}-arm") - sh(script: "docker manifest inspect ${REPOSITORY}:${tag}") - sh(script: "docker manifest push -p ${REPOSITORY}:${tag}") - sh(script: "docker manifest create ${REPOSITORY}:latest ${REPOSITORY}:${tag}-amd64 ${REPOSITORY}:${tag}-arm64 ${REPOSITORY}:${tag}-arm") - sh(script: "docker manifest inspect ${REPOSITORY}:latest") - sh(script: "docker manifest push -p ${REPOSITORY}:latest") + sh(script: "docker manifest create ${DOCKER_REPO}:${TAG} ${DOCKER_REPO}:${TAG}-amd64 ${DOCKER_REPO}:${TAG}-arm64 ${DOCKER_REPO}:${TAG}-arm") + sh(script: "docker manifest inspect ${DOCKER_REPO}:${TAG}") + sh(script: "docker manifest push -p ${DOCKER_REPO}:${TAG}") + sh(script: "docker manifest create ${DOCKER_REPO}:latest ${DOCKER_REPO}:${TAG}-amd64 ${DOCKER_REPO}:${TAG}-arm64 ${DOCKER_REPO}:${TAG}-arm") + sh(script: "docker manifest inspect ${DOCKER_REPO}:latest") + sh(script: "docker manifest push -p ${DOCKER_REPO}:latest") } else if (BRANCH_NAME == 'develop') { - sh(script: "docker manifest create ${REPOSITORY}:develop ${REPOSITORY}:develop-amd64 ${REPOSITORY}:develop-arm64 ${REPOSITORY}:develop-arm") - sh(script: "docker manifest inspect ${REPOSITORY}:develop") - sh(script: "docker manifest push -p ${REPOSITORY}:develop") + sh(script: "docker manifest create ${DOCKER_REPO}:develop ${DOCKER_REPO}:develop-amd64 ${DOCKER_REPO}:develop-arm64 ${DOCKER_REPO}:develop-arm") + sh(script: "docker manifest inspect ${DOCKER_REPO}:develop") + sh(script: "docker manifest push -p ${DOCKER_REPO}:develop") } } } } + stage('GitHub Release') { + when { branch 'master' } + agent { label 'amd64'} + steps { + sh """ + git remote set-url origin "https://${GIT_TOKEN_USR}:${GIT_TOKEN_PSW}@github.com/${GIT_REPO}.git" + git tag ${TAG} + git push --tags + """ + } + } } }