| 
									
										
										
										
											2019-02-05 20:46:19 -06:00
										 |  |  | pipeline { | 
					
						
							|  |  |  |     agent none | 
					
						
							|  |  |  |     environment { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06: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 20:46:19 -06:00
										 |  |  |     } | 
					
						
							|  |  |  |     stages { | 
					
						
							|  |  |  |         stage('Flake8') { | 
					
						
							|  |  |  |             agent { label 'amd64'} | 
					
						
							|  |  |  |             steps { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06: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 20:46:19 -06:00
										 |  |  |                     rm -rf venv/ | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06:00
										 |  |  |                 """ | 
					
						
							|  |  |  |                 script { | 
					
						
							|  |  |  |                     TAG = sh(returnStdout: true, script: 'grep -i version ${VERSION_FILE} | cut -d" " -f3 | tr -d \\"').trim() | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2019-02-05 20:46:19 -06: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 23:47:56 -06:00
										 |  |  |                                 def image = docker.build("${DOCKER_REPO}:${TAG}-amd64") | 
					
						
							| 
									
										
										
										
											2019-02-05 20:46:19 -06:00
										 |  |  |                                 image.push() | 
					
						
							|  |  |  |                                  | 
					
						
							|  |  |  |                             } else if (BRANCH_NAME == 'develop') { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06:00
										 |  |  |                                 def image = docker.build("${DOCKER_REPO}:develop-amd64") | 
					
						
							| 
									
										
										
										
											2019-02-05 20:46:19 -06:00
										 |  |  |                                 image.push() | 
					
						
							|  |  |  |                             } | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 stage('ARMv6') { | 
					
						
							|  |  |  |                     when { | 
					
						
							|  |  |  |                         anyOf { | 
					
						
							|  |  |  |                             branch 'master' | 
					
						
							|  |  |  |                             branch 'develop' | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     agent { label 'arm64'} | 
					
						
							|  |  |  |                     steps { | 
					
						
							|  |  |  |                         script { | 
					
						
							|  |  |  |                             if (BRANCH_NAME == 'master') { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06:00
										 |  |  |                                 def image = docker.build("${DOCKER_REPO}:${TAG}-arm", "-f Dockerfile.arm .") | 
					
						
							| 
									
										
										
										
											2019-02-05 20:46:19 -06:00
										 |  |  |                                 image.push() | 
					
						
							|  |  |  |                             } else if (BRANCH_NAME == 'develop') { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06:00
										 |  |  |                                 def image = docker.build("${DOCKER_REPO}:develop-arm", "-f Dockerfile.arm .") | 
					
						
							| 
									
										
										
										
											2019-02-05 20:46:19 -06:00
										 |  |  |                                 image.push() | 
					
						
							|  |  |  |                             } | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 stage('ARM64v8') { | 
					
						
							|  |  |  |                     when { | 
					
						
							|  |  |  |                         anyOf { | 
					
						
							|  |  |  |                             branch 'master' | 
					
						
							|  |  |  |                             branch 'develop' | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     agent { label 'arm64'} | 
					
						
							|  |  |  |                     steps { | 
					
						
							|  |  |  |                         script { | 
					
						
							|  |  |  |                             if (BRANCH_NAME == 'master') { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06:00
										 |  |  |                                 def image = docker.build("${DOCKER_REPO}:${TAG}-arm64", "-f Dockerfile.arm64 .") | 
					
						
							| 
									
										
										
										
											2019-02-05 20:46:19 -06:00
										 |  |  |                                 image.push() | 
					
						
							|  |  |  |                             } else if (BRANCH_NAME == 'develop') { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06:00
										 |  |  |                                 def image = docker.build("${DOCKER_REPO}:develop-arm64", "-f Dockerfile.arm64 .") | 
					
						
							| 
									
										
										
										
											2019-02-05 20:46:19 -06: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 23:47:56 -06: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 20:46:19 -06:00
										 |  |  |                     } else if (BRANCH_NAME == 'develop') { | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06: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 20:46:19 -06:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-02-05 23:47:56 -06: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 20:46:19 -06:00
										 |  |  |     } | 
					
						
							|  |  |  | } |