50 lines
1.4 KiB
Bash
Executable File
50 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
###################################
|
|
# gitdist packs zip archives and #
|
|
# copies them to a remote server #
|
|
###################################
|
|
|
|
example='projectName=spameggs
|
|
sshUserHost="foo@bar.org"
|
|
sshPort=22
|
|
releaseFolder=/srv/releases
|
|
files="binary1 binary2 readme.md"
|
|
suffix=amd64Win (optional)'
|
|
|
|
source ./.gitdist || { echo "you need a .gitdist file in your git repo"; leave=true; }
|
|
|
|
if [ -z "$projectName" ] || [ -z "$sshUserHost" ] || [ -z "$sshPort" ] || [ -z "$releaseFolder" ] || [ -z "$files" ]; then
|
|
echo "not all necessary variables provided - example of a .gitdist file:"
|
|
echo
|
|
echo "$example"
|
|
leave=true
|
|
fi
|
|
|
|
if [ "$leave" = true ]; then
|
|
exit 1
|
|
fi
|
|
|
|
timestamp=`date +"%Y%m%d-%H%M"`
|
|
currentBranch=`git rev-parse --abbrev-ref HEAD`
|
|
|
|
if [ "$currentBranch" = "master" ]; then
|
|
zipfile="$projectName-$timestamp$suffix.zip"
|
|
setCurrent=true
|
|
else
|
|
zipfile="$projectName-$currentBranch-$timestamp$suffix.zip"
|
|
fi
|
|
echo "zipfile: $zipfile"
|
|
zip "$zipfile" $files
|
|
|
|
destination="$releaseFolder/$projectName"
|
|
echo "destination: $sshUserHost:$destination"
|
|
ssh $sshUserHost -p $sshPort mkdir -p "$destination"
|
|
scp -P "$sshPort" "$zipfile" "$sshUserHost:$destination"
|
|
if [ "$setCurrent" = true ]; then
|
|
target="$destination/$zipfile"
|
|
slink="$destination/current.zip"
|
|
echo "linking $slink -> $target"
|
|
ssh $sshUserHost -p $sshPort ln -sf "$target" "$slink"
|
|
fi
|