depot/web/lukegbcom/deploy.sh

43 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env nix-shell
#!nix-shell -p nodePackages.firebase-tools -p vault -i bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
DEPOT="$(realpath "${SCRIPT_DIR}/../..")"
vault_path=unix:///run/tokend/sock
deploycmd="deploy"
channelname=""
postdeploy () {
return
}
if [[ "$(groups)" =~ (.* |^)"users"($| .*) ]] || ! test -f /etc/NIXOS; then
vault_path=https://vault.int.lukegb.com
channelname="$(id -un)"
fi
if [[ $# -gt 0 ]]; then
channelname="$1"
fi
if [[ "$channelname" != "" ]]; then
deploycmd="hosting:channel:deploy $channelname"
postdeploy () {
firebase hosting:channel:open $channelname --token="$token"
}
fi
echo "Building from $DEPOT" >&2
cd $(nix-build "$DEPOT" -A web.lukegbcom)
echo "Using vault at $vault_path to get token" >&2
token="$(vault read --field=token --address="$vault_path" gcp/roleset/lukegbcom-deployer/token)"
if [[ "$channelname" == "" ]]; then
echo "Deploying to prod" >&2
else
echo "Deploying to preview channel '$channelname'" >&2
fi
firebase $deploycmd --token="$token"
# Do it twice because sometimes it doesn't actually do anything the first time
firebase $deploycmd --token="$token"
postdeploy