update readme and pipeline

This commit is contained in:
Robert Schumann 2021-12-12 12:03:39 +01:00
parent 9637263016
commit bf2f61f236
3 changed files with 80 additions and 26 deletions

View File

@ -2,7 +2,7 @@ ARG UPSTREAM_IMAGE=trafex/alpine-nginx-php7:2.0.2
FROM $UPSTREAM_IMAGE FROM $UPSTREAM_IMAGE
LABEL maintainer="Robert Schumann <gutmensch@n-os.org>" LABEL maintainer="Robert Schumann <rs@n-os.org>"
ENV REPORT_PARSER_SOURCE="https://github.com/techsneeze/dmarcts-report-parser/archive/master.zip" \ ENV REPORT_PARSER_SOURCE="https://github.com/techsneeze/dmarcts-report-parser/archive/master.zip" \
REPORT_VIEWER_SOURCE="https://github.com/techsneeze/dmarcts-report-viewer/archive/master.zip" REPORT_VIEWER_SOURCE="https://github.com/techsneeze/dmarcts-report-viewer/archive/master.zip"

94
Jenkinsfile vendored
View File

@ -1,18 +1,23 @@
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
import java.text.SimpleDateFormat
DOCKER_IMAGE_NAME = ''
DOCKER_IMAGE = '' DOCKER_IMAGE = ''
DOCKER_ARGS = '--network=services_default' DOCKER_ARGS = '--network=services_default'
DOCKER_REGISTRY = 'registry.n-os.org:5000' DOCKER_REGISTRY = 'registry.n-os.org:5000'
DOCKER_REPO = "${JOB_BASE_NAME}"
properties([ properties([
parameters([ parameters([
string(defaultValue: 'trafex/alpine-nginx-php7:2.0.2', name: 'UPSTREAM_IMAGE', description: "Upstream docker image to start with") booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: 'Do you want to run the build with tests?')
]) ])
]) ])
node { node {
try { try {
pipeline() pipeline()
setBuildStatus('Success', 'SUCCESS')
} }
catch(e) { catch(e) {
setBuildStatus(e.toString().take(140), 'FAILURE') setBuildStatus(e.toString().take(140), 'FAILURE')
@ -24,37 +29,86 @@ node {
} }
// --- helper functions --- /*
******************************************************************
standard functions
these functions below implement the standard docker image pipeline
******************************************************************
*/
def pipeline() { def pipeline() {
stage('checkout') {
stage('checkout git') {
checkout scm checkout scm
setBuildStatus('In progress...', 'PENDING') setBuildStatus('In progress...', 'PENDING')
} }
stage('image build') { // https://docs.cloudbees.com/docs/admin-resources/latest/plugins/docker-workflow
DOCKER_IMAGE = docker.build( stage('build image') {
"${DOCKER_REGISTRY}/${DOCKER_REPO}:${BUILD_ID} ", DOCKER_IMAGE_NAME = "${DOCKER_REGISTRY}/${getDockerImage()}:${getDockerTag()}"
"--build-arg UPSTREAM_IMAGE=${UPSTREAM_IMAGE} " + DOCKER_IMAGE = docker.build(DOCKER_IMAGE_NAME, "--no-cache ${DOCKER_ARGS} .")
"--no-cache ${DOCKER_ARGS} ."
)
} }
// stage('run tests') { stage('run tests') {
// DOCKER_IMAGE.inside("${DOCKER_ARGS} --entrypoint=") { if (fileExists('./test/run.sh') && !params.SKIP_TESTS) {
// sh 'bats /usr/build/test/*.bats' DOCKER_IMAGE.inside("${DOCKER_ARGS} --entrypoint=") {
// } sh 'bash /usr/build/test/run.sh'
// } }
}
else {
Utils.markStageSkippedForConditional('run tests')
}
}
stage('push image') { stage('push image') {
def shortHash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() if (BRANCH_NAME == 'master') {
DOCKER_IMAGE.push() DOCKER_IMAGE.push()
DOCKER_IMAGE.push(shortHash) }
else {
Utils.markStageSkippedForConditional('push image')
}
}
stage('delete image') {
if (BRANCH_NAME == 'master') {
Utils.markStageSkippedForConditional('delete image')
}
else {
deleteDockerImage(DOCKER_IMAGE_NAME)
}
setBuildStatus('Success', 'SUCCESS')
} }
} }
def cleanup() { void deleteDockerImage(image) {
sh(script: "docker rmi -f ${image}")
}
void cleanup() {
stage('schedule cleanup') { stage('schedule cleanup') {
build job: '../Maintenance/dangling-container-cleanup', wait: false build job: '/maintenance/starter', wait: false
}
}
String getDockerImage() {
return sh(script: "echo '${JOB_NAME}' | awk -F/ '{print \$(NF-1)}' | sed 's%docker-%%'", returnStdout: true).trim()
}
String getDockerTag() {
def shortHash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
def date = new Date()
def sdf = new SimpleDateFormat("yyyyMMddHHmmss")
// semver in TAG_ID file or reference to ARG in Dockerfile
if (!fileExists('./TAG_ID')) {
return "${sdf.format(date)}.${shortHash}.b${BUILD_ID}"
}
def tagId = sh(script: 'cat ./TAG_ID', returnStdout: true).trim()
if (tagId ==~ /^[A-Z_]+$/) {
return sh(script: "awk -F= '/ARG ${tagId}=/{print \$2}' Dockerfile", returnStdout: true).trim()
}
else {
return tagId
} }
} }

View File

@ -1,4 +1,4 @@
# docker-dmarc-report [![Build Status](https://jenkins.bln.space/buildStatus/icon?job=docker-images%2Fdocker-dmarc-report)](https://jenkins.bln.space/job/docker-images/job/docker-dmarc-report/) [![Docker Pulls](https://img.shields.io/docker/pulls/gutmensch/dmarc-report.svg)](https://registry.hub.docker.com/u/gutmensch/dmarc-report/) # docker-dmarc-report [![Build Status](https://jenkins.bln.space/buildStatus/icon?job=docker-images%2Fdocker-jenkins%2Fmaster)](https://jenkins.bln.space/job/docker-images/job/docker-jenkins/job/master/) [![Docker Pulls](https://img.shields.io/docker/pulls/gutmensch/dmarc-report.svg)](https://registry.hub.docker.com/u/gutmensch/dmarc-report/)
This image is intended to combine a dmarc report parser (see https://github.com/techsneeze/dmarcts-report-parser by TechSneeze.com and John Bieling) with a report viewer (see https://github.com/techsneeze/dmarcts-report-viewer/ by the same people) into a runnable docker image / microservice. This image is intended to combine a dmarc report parser (see https://github.com/techsneeze/dmarcts-report-parser by TechSneeze.com and John Bieling) with a report viewer (see https://github.com/techsneeze/dmarcts-report-viewer/ by the same people) into a runnable docker image / microservice.