Module: check_mk
Branch: master
Commit: 2041cdbdda627649e1b711f8131f37bf3789d6dc
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2041cdbdda6276…
Author: Alex Zurhake <az(a)mathias-kettner.de>
Date: Wed Mar 27 13:09:40 2019 +0100
CMK-1899: build CMK docker container
Change-Id: Ib5084e6d5352cd075317cabbff1c80e517f9ce78
---
buildscripts/scripts/build-cmk-container.sh | 64 ++++++++++++++++++++++
buildscripts/scripts/nightly-cmk-container.jenkins | 43 +++++++++++++++
2 files changed, 107 insertions(+)
diff --git a/buildscripts/scripts/build-cmk-container.sh
b/buildscripts/scripts/build-cmk-container.sh
new file mode 100755
index 0000000..ce419a6
--- /dev/null
+++ b/buildscripts/scripts/build-cmk-container.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+set -e
+unset LANG
+
+log() { echo "[$(date '+%F %T')] =============================="
"$@"; }
+die() { log "$@"; exit 1; }
+
+if [ "$1" = "-h" ] || [ "$1" = "--help" ] || [
"$1" = "" ] || [ "$2" = "" ] || [ "$3" =
"" ]; then
+ echo "Aufrufen: bw-docker-bauen [BRANCH] [EDITION] [VERSION]"
+ echo " bw-docker-bauen 1.5.0 enterprise 1.5.0p4"
+ echo
+ exit 0
+fi
+
+BRANCH=$1
+EDITION=$2
+VERSION=$3
+
+if [ $EDITION = raw ]; then
+ SUFFIX=.cre
+elif [ $EDITION = enterprise ]; then
+ SUFFIX=.cee
+elif [ $EDITION = managed ]; then
+ SUFFIX=.cme
+else
+ die "FEHLER: Unbekannte Edition '$EDITION'"
+fi
+
+mkdir -p /bauwelt/tmp
+TMP_PATH=$(mktemp --directory -p /bauwelt/tmp --suffix=.cmk-docker)
+DOCKER_PATH="$TMP_PATH/check-mk-${EDITION}-${VERSION}${SUFFIX}/docker"
+DOCKER_IMAGE_ARCHIVE="check-mk-${EDITION}-docker-${VERSION}.tar.gz"
+PKG_NAME="check-mk-${EDITION}-${VERSION}"
+PKG_FILE="${PKG_NAME}_0.stretch_$(dpkg --print-architecture).deb"
+
+trap "rm -rf \"$TMP_PATH\"" SIGTERM SIGHUP SIGINT
+
+log "Unpack source tar to $TMP_PATH"
+tar -xz -C "$TMP_PATH" -f
"/bauwelt/download/${VERSION}/check-mk-${EDITION}-${VERSION}${SUFFIX}.tar.gz"
+
+log "Copy debian package..."
+cp "/bauwelt/download/${VERSION}/${PKG_FILE}" "$DOCKER_PATH/"
+
+log "Building container image"
+make -C "$DOCKER_PATH" "$DOCKER_IMAGE_ARCHIVE"
+
+log "Verschiebe Image-Tarball..."
+mv -v "$DOCKER_PATH/$DOCKER_IMAGE_ARCHIVE"
"/bauwelt/download/${VERSION}/"
+
+if [ $EDITION = raw ]; then
+ log "Erstelle \"{$BRANCH}-latest\" tag..."
+ docker tag "checkmk/check-mk-${EDITION}:${VERSION}"
"checkmk/check-mk-${EDITION}:${BRANCH}-latest"
+
+ log "Erstelle \"latest\" tag..."
+ docker tag "checkmk/check-mk-${EDITION}:${VERSION}"
"checkmk/check-mk-${EDITION}:latest"
+
+ log "Lade zu Docker-Hub hoch..."
+ DOCKERCLOUD_NAMESPACE=checkmk docker push
"checkmk/check-mk-${EDITION}:${VERSION}"
+ DOCKERCLOUD_NAMESPACE=checkmk docker push
"checkmk/check-mk-${EDITION}:${BRANCH}-latest"
+ DOCKERCLOUD_NAMESPACE=checkmk docker push
"checkmk/check-mk-${EDITION}:latest"
+fi
+
+log "Räume temporäres Verzeichnis $TMP_PATH weg"
+rm -rf "$TMP_PATH"
diff --git a/buildscripts/scripts/nightly-cmk-container.jenkins
b/buildscripts/scripts/nightly-cmk-container.jenkins
new file mode 100644
index 0000000..22f162b
--- /dev/null
+++ b/buildscripts/scripts/nightly-cmk-container.jenkins
@@ -0,0 +1,43 @@
+import java.text.SimpleDateFormat
+
+properties([
+ pipelineTriggers([
+ upstream(upstreamProjects: 'cmk_master/nightly_build_containerized',
threshold: hudson.model.Result.SUCCESS)
+ ])
+])
+
+currentBuild.description = '\nBuilding the CMK docker container\n'
+
+def dateFormat = new SimpleDateFormat("yyyy.MM.dd")
+def date = new Date()
+def CMK_VERS = dateFormat.format(date)
+def DAILY_DATA = '/var/jenkins_home/daily-data/' +
BRANCH_NAME.replaceAll("/","-") + '/' + CMK_VERS
+
+def PACKAGE_DIR = '/bauwelt/download'
+def GPG_KEY_DIR = '/bauwelt/etc/.gnupg'
+def RELEASE_KEY_DIR = '/bauwelt/git/release/release.key'
+
+node {
+ docker.withRegistry(DOCKER_REGISTRY, 'nexus') {
+ IMAGE = 'ubuntu-18.04-common'
+ docker.image(IMAGE).pull()
+ docker.image(IMAGE).inside("-u 0:0 -v
${PACKAGE_DIR}/${CMK_VERS}:${PACKAGE_DIR}/${CMK_VERS} -v ${DAILY_DATA}:${DAILY_DATA} -v
/var/run/docker.sock:/var/run/docker.sock -v ${GPG_KEY_DIR}:${GPG_KEY_DIR}:ro -v
${RELEASE_KEY_DIR}:${RELEASE_KEY_DIR}:ro -v /root/.cmk-credentials:/root/.cmk-credentials
--network ci_local-infra") {
+ stage('Build Container') {
+ sh """
+ cd ${DAILY_DATA}/git/
+ ./buildscripts/scripts/build-cmk-container.sh master enterprise
${CMK_VERS}
+ """
+ withCredentials([usernamePassword(credentialsId:
'9d7aca31-0043-4cd0-abeb-26a249d68261', passwordVariable:
'GPG_PASSPHRASE', usernameVariable: 'GPG_USERNAME')]) {
+ sh """
+ cd ${PACKAGE_DIR}/${CMK_VERS}
+ rm -f HASHES
+ ${DAILY_DATA}/git/buildscripts/scripts/sign-packages.sh
${CMK_VERS}
+ rsync -av -e "ssh -o StrictHostKeyChecking=no -i
${RELEASE_KEY_DIR}" \
+ ${PACKAGE_DIR}/${CMK_VERS} \
+ bauwelt@mathias-kettner.de:${PACKAGE_DIR}
+ """
+ }
+ }
+ }
+ }
+}