#!/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