diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dbd34294..d7e003cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,12 +2,14 @@ stages: - build - deploy -build: +build_releases: stage: build before_script: - git submodule update --init script: - /bin/bash build-deb.sh - - /usr/local/bin/deploy-package + - /usr/local/bin/deploy-package -C pvc only: - - master + - tags + except: + - branches diff --git a/build-and-deploy.sh b/build-and-deploy.sh index 72842093..256b21af 100755 --- a/build-and-deploy.sh +++ b/build-and-deploy.sh @@ -13,30 +13,35 @@ else fi HOSTS=( ${@} ) -echo "${HOSTS[@]}" +echo "> Deploying to host(s): ${HOSTS[@]}" # Build the packages -./build-deb.sh +echo -n "Building packages... " +version="$( ./build-unstable-deb.sh 2>/dev/null )" +echo "done. Package version ${version}." # Install the client(s) locally -$SUDO dpkg -i ../pvc-client*.deb +echo -n "Installing client packages locally... " +$SUDO dpkg -i ../pvc-client*_${version}*.deb &>/dev/null +echo "done". for HOST in ${HOSTS[@]}; do - echo "****" - echo "Deploying to host ${HOST}" - echo "****" - ssh $HOST $SUDO rm -rf /tmp/pvc - ssh $HOST mkdir /tmp/pvc - scp ../*.deb $HOST:/tmp/pvc/ - echo "Installing packages..." - ssh $HOST $SUDO dpkg -i /tmp/pvc/{pvc-client-cli,pvc-daemon-common,pvc-daemon-api,pvc-daemon-node}*.deb - ssh $HOST rm -rf /tmp/pvc - echo "Restarting PVC node daemon..." - ssh $HOST $SUDO systemctl restart pvcapid - ssh $HOST $SUDO systemctl restart pvcapid-worker - ssh $HOST $SUDO systemctl restart pvcnoded - echo "****" - echo "Waiting 15s for host ${HOST} to stabilize" - echo "****" + echo "> Deploying packages to host ${HOST}" + echo -n "Copying packages... " + ssh $HOST $SUDO rm -rf /tmp/pvc &>/dev/null + ssh $HOST mkdir /tmp/pvc &>/dev/null + scp ../pvc-*_${version}*.deb $HOST:/tmp/pvc/ &>/dev/null + echo "done." + echo -n "Installing packages... " + ssh $HOST $SUDO dpkg -i /tmp/pvc/{pvc-client-cli,pvc-daemon-common,pvc-daemon-api,pvc-daemon-node}*.deb &>/dev/null + ssh $HOST rm -rf /tmp/pvc &>/dev/null + echo "done." + echo -n "Restarting PVC daemons... " + ssh $HOST $SUDO systemctl restart pvcapid &>/dev/null + ssh $HOST $SUDO systemctl restart pvcapid-worker &>/dev/null + ssh $HOST $SUDO systemctl restart pvcnoded &>/dev/null + echo "done." + echo -n "Waiting 15s for host to stabilize... " sleep 15 + echo "done." done diff --git a/build-unstable-deb.sh b/build-unstable-deb.sh new file mode 100755 index 00000000..57fdb8eb --- /dev/null +++ b/build-unstable-deb.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -o xtrace +exec 3>&1 +exec 1>&2 +# Ensure we're up to date +git pull --rebase +# Update the version to a sensible git revision for easy visualization +base_ver="$( head -1 debian/changelog | awk -F'[()-]' '{ print $2 }' )" +new_ver="${base_ver}~git-$(git rev-parse --short HEAD)" +echo ${new_ver} >&3 +# Back up the existing changelog and Daemon.py files +tmpdir=$( mktemp -d ) +cp -a debian/changelog node-daemon/pvcnoded/Daemon.py ${tmpdir}/ +# Replace the "base" version with the git revision version +sed -i "s/version = '${base_ver}'/version = '${new_ver}'/" node-daemon/pvcnoded/Daemon.py +sed -i "s/${base_ver}-0/${new_ver}/" debian/changelog +cat < debian/changelog +pvc (${new_ver}) unstable; urgency=medium + + * Unstable revision for commit $(git rev-parse --short HEAD) + + -- Joshua Boniface $( date -R ) +EOF +# Build source tarball +dh_make -p pvc_${new_ver} --createorig --single --yes +# Build packages +dpkg-buildpackage -us -uc +# Restore original changelog and Daemon.py files +cp -a ${tmpdir}/changelog debian/changelog +cp -a ${tmpdir}/Daemon.py node-daemon/pvcnoded/Daemon.py +# Clean up +rm -r ${tmpdir} +dh_clean