better jenkinsfile

This commit is contained in:
Nicholas St. Germain 2019-02-05 23:47:56 -06:00
parent 4270fc5a68
commit bffac4d6a2

61
Jenkinsfile vendored
View file

@ -1,16 +1,24 @@
pipeline { pipeline {
agent none agent none
environment { 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 { stages {
stage('Flake8') { stage('Flake8') {
agent { label 'amd64'} agent { label 'amd64'}
steps { steps {
sh ''' sh """
python3 -m venv venv && venv/bin/pip install flake8 && venv/bin/python -m flake8 --max-line-length 120 *.py varken/*.py python3 -m venv venv && venv/bin/pip install flake8 && venv/bin/python -m flake8 --max-line-length 120 ${FLAKE_FILES}
rm -rf venv/ rm -rf venv/
''' """
script {
TAG = sh(returnStdout: true, script: 'grep -i version ${VERSION_FILE} | cut -d" " -f3 | tr -d \\"').trim()
}
} }
} }
stage('Docker Builds') { stage('Docker Builds') {
@ -26,12 +34,11 @@ pipeline {
steps { steps {
script { script {
if (BRANCH_NAME == 'master') { 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("${DOCKER_REPO}:${TAG}-amd64")
def image = docker.build("${REPOSITORY}:${tag}-amd64")
image.push() image.push()
} else if (BRANCH_NAME == 'develop') { } else if (BRANCH_NAME == 'develop') {
def image = docker.build("${REPOSITORY}:develop-amd64") def image = docker.build("${DOCKER_REPO}:develop-amd64")
image.push() image.push()
} }
} }
@ -48,11 +55,10 @@ pipeline {
steps { steps {
script { script {
if (BRANCH_NAME == 'master') { 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("${DOCKER_REPO}:${TAG}-arm", "-f Dockerfile.arm .")
def image = docker.build("${REPOSITORY}:${tag}-arm", "-f Dockerfile.arm .")
image.push() image.push()
} else if (BRANCH_NAME == 'develop') { } 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() image.push()
} }
} }
@ -69,11 +75,10 @@ pipeline {
steps { steps {
script { script {
if (BRANCH_NAME == 'master') { 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("${DOCKER_REPO}:${TAG}-arm64", "-f Dockerfile.arm64 .")
def image = docker.build("${REPOSITORY}:${tag}-arm64", "-f Dockerfile.arm64 .")
image.push() image.push()
} else if (BRANCH_NAME == 'develop') { } 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() image.push()
} }
} }
@ -92,20 +97,30 @@ pipeline {
steps { steps {
script { script {
if (BRANCH_NAME == 'master') { 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 ${DOCKER_REPO}:${TAG} ${DOCKER_REPO}:${TAG}-amd64 ${DOCKER_REPO}:${TAG}-arm64 ${DOCKER_REPO}:${TAG}-arm")
sh(script: "docker manifest create ${REPOSITORY}:${tag} ${REPOSITORY}:${tag}-amd64 ${REPOSITORY}:${tag}-arm64 ${REPOSITORY}:${tag}-arm") sh(script: "docker manifest inspect ${DOCKER_REPO}:${TAG}")
sh(script: "docker manifest inspect ${REPOSITORY}:${tag}") sh(script: "docker manifest push -p ${DOCKER_REPO}:${TAG}")
sh(script: "docker manifest push -p ${REPOSITORY}:${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 create ${REPOSITORY}:latest ${REPOSITORY}:${tag}-amd64 ${REPOSITORY}:${tag}-arm64 ${REPOSITORY}:${tag}-arm") sh(script: "docker manifest inspect ${DOCKER_REPO}:latest")
sh(script: "docker manifest inspect ${REPOSITORY}:latest") sh(script: "docker manifest push -p ${DOCKER_REPO}:latest")
sh(script: "docker manifest push -p ${REPOSITORY}:latest")
} else if (BRANCH_NAME == 'develop') { } 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 create ${DOCKER_REPO}:develop ${DOCKER_REPO}:develop-amd64 ${DOCKER_REPO}:develop-arm64 ${DOCKER_REPO}:develop-arm")
sh(script: "docker manifest inspect ${REPOSITORY}:develop") sh(script: "docker manifest inspect ${DOCKER_REPO}:develop")
sh(script: "docker manifest push -p ${REPOSITORY}: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
"""
}
}
} }
} }