Docker-Runit/Jenkinsfile
2019-06-11 16:59:58 +02:00

269 lines
9 KiB
Groovy

pipeline {
agent any
options {
disableConcurrentBuilds()
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('Prepare') {
steps {
sh 'printenv'
telegramSend "Pipeline STARTED: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
sh 'make prepare'
}
}
stage('Build Marshall') {
steps {
sh 'make build-marshall'
}
}
stage('Build PHP Runtime Containers'){
parallel {
stage('PHP 5.6'){
agent { node { label 'x86' } }
steps {
sh 'make build-php-core-5.6'
}
}
stage('PHP 7.0'){
agent { node { label 'x86' } }
steps {
sh 'make build-php-core-7.0'
}
}
stage('PHP 7.1'){
agent { node { label 'x86' } }
steps {
sh 'make build-php-core-7.1'
}
}
stage('PHP 7.2'){
agent { node { label 'x86' } }
steps {
sh 'make build-php-core-7.2'
}
}
stage('PHP 7.3'){
agent { node { label 'x86' } }
steps {
sh 'make build-php-core-7.3'
}
}
stage('Node 8'){
agent { node { label 'x86' } }
steps {
sh 'make build-node-8'
}
}
stage('Node 10'){
agent { node { label 'x86' } }
steps {
sh 'make build-node-10'
}
}
stage('Node 11'){
agent { node { label 'x86' } }
steps {
sh 'make build-node-11'
}
}
stage('Node 12'){
agent { node { label 'x86' } }
steps {
sh 'make build-node-12'
}
}
}
}
stage('Build Derived PHP Containers'){
parallel {
stage('CLI PHP 5.6') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-cli-5.6'
}
}
stage('Nginx PHP 5.6') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-nginx-5.6'
}
}
stage('Apache PHP 5.6') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-apache-5.6'
}
}
stage('CLI PHP 7.0') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-cli-7.0'
}
}
stage('Nginx PHP 7.0') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-nginx-7.0'
}
}
stage('Apache PHP 7.0') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-apache-7.0'
}
}
stage('CLI PHP 7.1') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-cli-7.1'
}
}
stage('Nginx PHP 7.1') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-nginx-7.1'
}
}
stage('Apache PHP 7.1') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-apache-7.1'
}
}
stage('CLI PHP 7.2') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-cli-7.2'
}
}
stage('Nginx PHP 7.2') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-nginx-7.2'
}
}
stage('Apache PHP 7.2') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-apache-7.2'
}
}
stage('CLI PHP 7.3') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-cli-7.3'
}
}
stage('Nginx PHP 7.3') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-nginx-7.3'
}
}
stage('Apache PHP 7.3') {
agent { node { label 'x86' } }
steps {
sh 'make build-php-apache-7.3'
}
}
}
}
stage('Tag Containers'){
parallel {
stage('Core') {
agent { node { label 'x86' } }
steps {
sh 'make tag-php-core'
}
}
stage('CLI') {
agent { node { label 'x86' } }
steps {
sh 'make tag-php-cli'
}
}
stage('Nginx') {
agent { node { label 'x86' } }
steps {
sh 'make tag-nginx'
}
}
stage('Apache') {
agent { node { label 'x86' } }
steps {
sh 'make tag-apache'
}
}
stage('Node') {
agent { node { label 'x86' } }
steps {
sh 'make tag-node'
}
}
}
}
stage('Test Containers'){
parallel {
stage('All Nginx Containers'){
agent { node { label 'x86' } }
steps {
sh 'make test-php-nginx-5.6'
sh 'make test-php-nginx-7.0'
sh 'make test-php-nginx-7.1'
sh 'make test-php-nginx-7.2'
sh 'make test-php-nginx-7.3'
}
}
stage('All Apache Containers'){
agent { node { label 'x86' } }
steps {
sh 'make test-php-apache-5.6'
sh 'make test-php-apache-7.0'
sh 'make test-php-apache-7.1'
sh 'make test-php-apache-7.2'
sh 'make test-php-apache-7.3'
}
}
}
}
stage('Push Containers'){
parallel {
stage('Push') {
agent { node { label 'x86' } }
steps {
sh 'make push-marshall'
sh 'make push-core'
sh 'make push-cli'
sh 'make push-nginx'
sh 'make push-apache'
sh 'make push-node'
telegramSend 'Updated Base Images have been pushed'
}
}
}
}
}
post {
success{
telegramSend "Pipeline SUCCESS: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
}
aborted{
telegramSend "Pipeline ABORTED: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
}
failure{
telegramSend "Pipeline FAIL: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
}
cleanup {
sh 'make cleanup'
cleanWs()
}
}
}