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
|
|
|
}
|
|
|
|
}
|