diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d9a41d0..fca0ded 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -10,10 +10,14 @@ variables:
services:
- docker:19.03.1-dind
+stages:
+ - build_docker
+ - notification
+
dev_deploy:
before_script:
- base64 -d $SA_Development | docker login -u _json_key --password-stdin https://eu.gcr.io
- stage: build
+ stage: build_docker
script:
- cd docker
- docker build -t $IMAGE_TAG .
@@ -24,7 +28,7 @@ dev_deploy:
prod_deploy:
before_script:
- base64 -d $SA_Production | docker login -u _json_key --password-stdin https://eu.gcr.io
- stage: build
+ stage: build_docker
script:
- docker pull $IMAGE_TAG
- docker tag $IMAGE_TAG $IMAGE_TAG_PROD
@@ -35,11 +39,30 @@ prod_deploy:
stable_deploy:
before_script:
- base64 -d $SA_Production | docker login -u _json_key --password-stdin https://eu.gcr.io
- stage: build
+ stage: build_docker
script:
- docker pull $IMAGE_TAG
- docker tag $IMAGE_TAG $IMAGE_TAG_STABLE
- docker push $IMAGE_TAG_STABLE
only:
- /stable_v.*/
-
\ No newline at end of file
+
+successful-results:
+ image: eu.gcr.io/vnc-development/docker-vnc-deb-builder:latest
+ stage: notification
+ script:
+ - echo "SUCCESS" > result.txt
+ - ./tools/nagnotify.sh || echo "done"
+ rules:
+ - if: '$CI_COMMIT_BRANCH == "master"'
+ when: on_success
+
+failed-results:
+ image: eu.gcr.io/vnc-development/docker-vnc-deb-builder:latest
+ stage: notification
+ script:
+ - echo "FAILURE" > result.txt
+ - ./tools/nagnotify.sh || echo "done"
+ rules:
+ - if: '$CI_COMMIT_BRANCH == "master"'
+ when: on_failure
diff --git a/tools/broadcast.cfg b/tools/broadcast.cfg
new file mode 100644
index 0000000..57a84b2
--- /dev/null
+++ b/tools/broadcast.cfg
@@ -0,0 +1,5 @@
+BROADCASTSENDER=jenkins.bot@vnc.biz
+BROADCASTID=broadcast-gel4it1o9fvi@vnc.biz
+BCTITLE=Factory - VNC Hybridauth2
+BCRECEIPIENTS=leonidas.apostolidis@vnc.biz
+BCRESTURL=https://xmpp.vnc.biz/rest
diff --git a/tools/nagnotify.sh b/tools/nagnotify.sh
new file mode 100755
index 0000000..5fdfa03
--- /dev/null
+++ b/tools/nagnotify.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+#######
+# Use Jenkins env vars if set otherwise use the gitlab-ci ones
+BUILD_URL=${BUILD_URL:-$CI_PIPELINE_URL}
+BRANCH_NAME=${BRANCH_NAME:-$CI_COMMIT_REF_NAME}
+#######
+
+echo "BRANCH: $BRANCH_NAME"
+
+if [ -f result.txt ]; then
+ RESULT=$(cat result.txt)
+ #debug
+ echo "result:"
+ cat result.txt
+fi
+
+if [ -f code-analysis.txt ]; then
+ CODEERR=$(cat code-analysis.txt)
+ #debug
+ echo "code-analysis"
+ cat code-analysis.txt
+fi
+
+AUTHOR=$(git log -1 | grep "^Author: " | awk -F "Author:" '{print $2}' | awk -F "<" '{print $1}')
+
+echo "All local branches:"; git branch
+echo "BRANCH_NAME: $BRANCH_NAME"
+
+JCHANGELOG=$(git log --pretty=format:%s origin/master..origin/$BRANCH_NAME | nl)
+
+echo "changes:"
+echo "$JCHANGELOG"
+
+
+if [ "$RESULT" ]; then
+ echo "$BUILD_URL - $RESULT"
+ case $RESULT in
+ SUCCESS|success)
+ if [ "$BRANCH_NAME" = "master" ]; then
+ echo -e "job succesfully finished: $BUILD_URL \n Changes: \n $JCHANGELOG" | ./tools/sendbroadcast.sh
+ # nagzillac "room^vncmail__project@conference.vnc.biz^job succesfully finished: $BUILD_URL - new APK is available at https://basepackages.vnc.biz/apk/VNCmail-2.0.0-$BUILD_ID.apk"
+ else
+ echo -e "job succesfully finished: $BUILD_URL \n Changes: \n $JCHANGELOG \n Author: $AUTHOR" | ./tools/sendbroadcast.sh
+ # nagzillac "room^vncmail__project@conference.vnc.biz^job succesfully finished: $BUILD_URL"
+ fi
+ ;;
+ UNSTABLE|WARNING|unstable)
+ if [ "$CODEERR" ]; then
+ if [ "$BRANCH_NAME" = "master" ]; then
+ echo -e "job finished with warnings: $BUILD_URL \n $CODEERR \n Changes: \n $JCHANGELOG " | ./tools/sendbroadcast.sh
+ # nagzillac "room^vncmail__project@conference.vnc.biz^job finished with warnings: $BUILD_URL \n $CODEERR \n new APK is available at https://basepackages.vnc.biz/apk/VNCmail-2.0.0-$BUILD_ID.apk"
+ else
+ echo -e "job finished with warnings: $BUILD_URL \n $CODEERR \n Changes: \n $JCHANGELOG \n Author: $AUTHOR" | ./tools/sendbroadcast.sh
+ # nagzillac "room^vncmail__project@conference.vnc.biz^job finished with warnings: $BUILD_URL \n $CODEERR"
+ fi
+ else
+ echo -e "job finished with warnings: $BUILD_URL \n Changes: \n $JCHANGELOG \n Author: $AUTHOR" | ./tools/sendbroadcast.sh
+ #nagzillac "room^vncmail__project@conference.vnc.biz^job finished with warnings: $BUILD_URL"
+ fi
+ ;;
+ FAILURE)
+ if [ "$CODEERR" ]; then
+ CODENUM=$(wc -l code-analysis.txt | awk '{print $1}')
+ echo -e "job FAILED - please check: $BUILD_URL \n code analysis found $CODENUM errors \n $CODEERR \n\n Changes: \n $JCHANGELOG \n Author: $AUTHOR" | ./tools/sendbroadcast.sh
+ # nagzillac "room^vncmail__project@conference.vnc.biz^job FAILED - please check: $BUILD_URL \n code analysis found $CODENUM errors"
+ else
+ echo -e "job FAILED - please check: $BUILD_URL immediately \n Changes: \n $JCHANGELOG \n Author: $AUTHOR" | ./tools/sendbroadcast.sh
+ # nagzillac "room^vncmail__project@conference.vnc.biz^job FAILED - please check: $BUILD_URL immediately"
+ fi
+ ;;
+ *)
+ echo -e "job finished with ambigous result - please check: $BUILD_URL immediately \n Changes: \n $JCHANGELOG \n Author: $AUTHOR" | ./tools/sendbroadcast.sh
+ # nagzillac "chat^stefan.saenger@vnc.biz^job finished with ambigous result - please check: $BUILD_URL immediately"
+ ;;
+ esac
+fi
diff --git a/tools/sendbroadcast.sh b/tools/sendbroadcast.sh
new file mode 100755
index 0000000..071fd97
--- /dev/null
+++ b/tools/sendbroadcast.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+BCBODY=`cat`
+
+function die_err() {
+ echo "$0: $*" >&2
+ exit 1
+}
+
+
+OldPWD=$(pwd)
+BaseDir=$(git rev-parse --show-toplevel)
+cd "$BaseDir" || exit 1
+
+
+CURLCRED="vnctalk:ohtai2Eicai4aiting7bec2am6Aih"
+
+if [ -f "tools/broadcast.cfg" ]; then
+ echo "found config"
+else
+ cd "$OldPWD" || exit 1
+ die_err "no broadcst config - bailing out"
+fi
+
+RECEIPIENTS=$(cat tools/broadcast.cfg | grep "^BCRECEIPIENTS" | awk -F "=" '{print $2}' | tr ',' '\n' | awk '{print "" $0 ""}' | sed 's/ //g' | grep -v "");
+BROADCASTSENDER=$(cat tools/broadcast.cfg | grep "^BROADCASTSENDER" | awk -F "=" '{print $2}');
+BROADCASTID=$(cat tools/broadcast.cfg | grep "^BROADCASTID" | awk -F "=" '{print $2}');
+BCTITLE=$(cat tools/broadcast.cfg | grep "^BCTITLE" | awk -F "=" '{print $2}');
+MSGID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
+BCRESTURL=$(cat tools/broadcast.cfg | grep "^BCRESTURL" | awk -F "=" '{print $2}');
+
+echo "" > "/tmp/$MSGID.xml"
+echo "$BCBODY" >> "/tmp/$MSGID.xml"
+echo "" >> "/tmp/$MSGID.xml"
+echo "$RECEIPIENTS" >> "/tmp/$MSGID.xml"
+echo "
+" >> "/tmp/$MSGID.xml"
+
+echo "raw message:"
+cat "/tmp/$MSGID.xml"
+
+curl -u "$CURLCRED" -H "Content-Type: text/xml" -X POST --data-binary "@/tmp/$MSGID.xml" "$BCRESTURL"