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.
This commit is contained in:
Joshua Boniface 2020-08-26 11:04:58 -04:00
parent 78dec77987
commit fc9df76570
3 changed files with 62 additions and 22 deletions

View File

@ -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

View File

@ -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

33
build-unstable-deb.sh Executable file
View File

@ -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 <<EOF > debian/changelog
pvc (${new_ver}) unstable; urgency=medium
* Unstable revision for commit $(git rev-parse --short HEAD)
-- Joshua Boniface <joshua@boniface.me> $( 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