Varken/Jenkinsfile

127 lines
5.2 KiB
Text
Raw Normal View History

2019-02-05 18:46:19 -08:00
pipeline {
agent none
environment {
2019-02-05 21:47:56 -08:00
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')
2019-02-05 18:46:19 -08:00
}
stages {
stage('Flake8') {
agent { label 'amd64'}
steps {
2019-02-05 21:47:56 -08:00
sh """
python3 -m venv venv && venv/bin/pip install flake8 && venv/bin/python -m flake8 --max-line-length 120 ${FLAKE_FILES}
2019-02-05 18:46:19 -08:00
rm -rf venv/
2019-02-05 21:47:56 -08:00
"""
script {
TAG = sh(returnStdout: true, script: 'grep -i version ${VERSION_FILE} | cut -d" " -f3 | tr -d \\"').trim()
}
2019-02-05 18:46:19 -08:00
}
}
stage('Docker Builds') {
parallel {
stage('amd64') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
agent { label 'amd64'}
steps {
script {
if (BRANCH_NAME == 'master') {
2019-02-05 21:47:56 -08:00
def image = docker.build("${DOCKER_REPO}:${TAG}-amd64")
2019-02-05 18:46:19 -08:00
image.push()
} else if (BRANCH_NAME == 'develop') {
2019-02-05 21:47:56 -08:00
def image = docker.build("${DOCKER_REPO}:develop-amd64")
2019-02-05 18:46:19 -08:00
image.push()
}
}
}
}
stage('ARMv6') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
agent { label 'arm64'}
steps {
script {
if (BRANCH_NAME == 'master') {
2019-02-05 21:47:56 -08:00
def image = docker.build("${DOCKER_REPO}:${TAG}-arm", "-f Dockerfile.arm .")
2019-02-05 18:46:19 -08:00
image.push()
} else if (BRANCH_NAME == 'develop') {
2019-02-05 21:47:56 -08:00
def image = docker.build("${DOCKER_REPO}:develop-arm", "-f Dockerfile.arm .")
2019-02-05 18:46:19 -08:00
image.push()
}
}
}
}
stage('ARM64v8') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
agent { label 'arm64'}
steps {
script {
if (BRANCH_NAME == 'master') {
2019-02-05 21:47:56 -08:00
def image = docker.build("${DOCKER_REPO}:${TAG}-arm64", "-f Dockerfile.arm64 .")
2019-02-05 18:46:19 -08:00
image.push()
} else if (BRANCH_NAME == 'develop') {
2019-02-05 21:47:56 -08:00
def image = docker.build("${DOCKER_REPO}:develop-arm64", "-f Dockerfile.arm64 .")
2019-02-05 18:46:19 -08:00
image.push()
}
}
}
}
}
}
stage('Docker Manifest Build') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
agent { label 'amd64'}
steps {
script {
if (BRANCH_NAME == 'master') {
2019-02-05 21:47:56 -08:00
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")
2019-02-05 18:46:19 -08:00
} else if (BRANCH_NAME == 'develop') {
2019-02-05 21:47:56 -08:00
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")
2019-02-05 18:46:19 -08:00
}
}
}
}
2019-02-05 21:47:56 -08:00
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
"""
}
}
2019-02-05 18:46:19 -08:00
}
}