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:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
									
								
							
							
						
						
									
										33
									
								
								build-unstable-deb.sh
									
									
									
									
									
										Executable 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
 | 
			
		||||
		Reference in New Issue
	
	Block a user