gitserver

self-hosted git server tooling
git clone https://git.ryansepassi.com/git/gitserver.git
Log | Files | Refs | README

push (1308B)


      1 #!/bin/sh
      2 # Sync local tooling to the DO box under ~/repos/.
      3 # Usage: GIT_HOST=ryan@your-box ./push
      4 set -eu
      5 
      6 DIR=$(cd "$(dirname "$0")" && pwd)
      7 [ -f "$DIR/.env" ] || { echo "create .env from .env.example"; exit 1; }
      8 . "$DIR/.env"
      9 
     10 : "${GIT_HOST:?set GIT_HOST, e.g. ryan@your-do-box}"
     11 : "${GIT_HOSTNAME:?set GIT_HOSTNAME in .env}"
     12 : "${PUBLIC_DOMAIN:?set PUBLIC_DOMAIN in .env}"
     13 : "${BUNNY_ZONE:?set BUNNY_ZONE in .env}"
     14 
     15 ssh "$GIT_HOST" 'mkdir -p ~/repos'
     16 
     17 rsync -av --delete "$DIR/bin/"    "$GIT_HOST:repos/bin/"
     18 rsync -av --delete "$DIR/assets/" "$GIT_HOST:repos/assets/"
     19 rsync -av --delete "$DIR/caddy/"  "$GIT_HOST:repos/caddy/"
     20 
     21 # Server-side config for scripts (add-repo, etc.)
     22 ssh "$GIT_HOST" "cat > ~/repos/config.env" <<EOF
     23 GIT_HOSTNAME=$GIT_HOSTNAME
     24 PUBLIC_DOMAIN=$PUBLIC_DOMAIN
     25 BUNNY_ZONE=$BUNNY_ZONE
     26 EOF
     27 
     28 ssh "$GIT_HOST" '
     29     set -eu
     30     chmod +x ~/repos/bin/*
     31     . ~/repos/config.env
     32     TS=$(tailscale ip -4 2>/dev/null | head -n1 || true)
     33     if [ -n "$TS" ]; then
     34         sed -i "s|__TAILSCALE_IP__|$TS|g; s|__GIT_HOSTNAME__|$GIT_HOSTNAME|g" ~/repos/caddy/*.caddy
     35         sudo systemctl reload caddy 2>/dev/null || true
     36     fi
     37     if command -v stagit >/dev/null; then
     38         ~/repos/bin/stagit-update
     39     else
     40         echo "stagit not installed yet — run: ~/repos/bin/bringup"
     41     fi
     42 '