From fc9df7657001a749c4d844033ac0d840156ef801 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Wed, 26 Aug 2020 11:04:58 -0400 Subject: [PATCH] Standardize package building 1. Only build on GitLab when there's a tag. 2. Add the packages on GitLab to component "pvc" in the repo. 3. Add build-unstable-deb.sh script to build git-versioned packages. 4. Revamp build-and-deploy to use build-unstable-deb.sh and cut down on output. --- .gitlab-ci.yml | 8 +++++--- build-and-deploy.sh | 43 ++++++++++++++++++++++++------------------- build-unstable-deb.sh | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 22 deletions(-) create mode 100755 build-unstable-deb.sh 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