Add `deploy` script
957be993f577e52d548cdebe85bedca3a55c036f
1 parent
ef51e7e9
deploy
added
+34 -0
| 1 | + | #!/bin/sh |
|
| 2 | + | # |
|
| 3 | + | # Build and deploy 'forge' to a remote server. |
|
| 4 | + | # |
|
| 5 | + | # Usage: ./deploy <host> |
|
| 6 | + | # |
|
| 7 | + | # Builds a Linux/amd64 binary, copies it to the remote host, |
|
| 8 | + | # moves it to /usr/local/bin/forge, and restarts the systemd service. |
|
| 9 | + | # |
|
| 10 | + | set -eu |
|
| 11 | + | ||
| 12 | + | if [ $# -lt 1 ]; then |
|
| 13 | + | echo "Usage: $0 <host>" >&2 |
|
| 14 | + | exit 1 |
|
| 15 | + | fi |
|
| 16 | + | ||
| 17 | + | HOST="$1" |
|
| 18 | + | BINARY="forge" |
|
| 19 | + | REMOTE_PATH="/usr/local/bin/$BINARY" |
|
| 20 | + | SERVICE="forge" |
|
| 21 | + | ||
| 22 | + | echo "Building $BINARY..." |
|
| 23 | + | GOOS=linux GOARCH=amd64 go build -o "bin/$BINARY" . |
|
| 24 | + | ||
| 25 | + | echo "Uploading to $HOST..." |
|
| 26 | + | scp -O "bin/$BINARY" "$USER@$HOST:/tmp/$BINARY" |
|
| 27 | + | ||
| 28 | + | echo "Installing and restarting service..." |
|
| 29 | + | ssh "$USER@$HOST" " |
|
| 30 | + | sudo mv /tmp/$BINARY $REMOTE_PATH && |
|
| 31 | + | sudo chmod 755 $REMOTE_PATH && |
|
| 32 | + | sudo systemctl restart $SERVICE |
|
| 33 | + | " |
|
| 34 | + | echo "Done." |