From 0f858f4577cbaeb03b1bccaf3cfef8e0c10c1e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Morais?= Date: Thu, 19 Feb 2026 11:42:00 -0800 Subject: [PATCH 1/7] add gh deploy script for any dev --- .github/workflows/deploy.yml | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..e7deec7a --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,51 @@ +name: Deploy Website + +on: + pull_request: + branches: + - main + types: + - opened + - synchronize + - reopened + +concurrency: + group: deploy-preview + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Deploy to server + uses: appleboy/ssh-action@v1 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SERVER_SSH_KEY }} + script: | + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" + + DEPLOY_DIR=/opt/loglife/preview + APP_NAME=loglife-preview + PORT=3001 + BRANCH=${{ github.head_ref }} + + if [ ! -d "$DEPLOY_DIR" ]; then + git clone https://github.com/${{ github.repository }}.git "$DEPLOY_DIR" + fi + + cd "$DEPLOY_DIR" + git fetch origin + git checkout "$BRANCH" + git reset --hard "origin/$BRANCH" + + cd website + pnpm install --frozen-lockfile + pnpm run build + + pm2 delete "$APP_NAME" || true + PORT=$PORT pm2 start pnpm --name "$APP_NAME" -- start --port $PORT + pm2 save From b4dd454247705c368881d13090779f7985d628d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Morais?= Date: Thu, 19 Feb 2026 11:51:59 -0800 Subject: [PATCH 2/7] fix ssh key name in deploy --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e7deec7a..74827d10 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -23,7 +23,7 @@ jobs: with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SERVER_SSH_KEY }} + key: ${{ secrets.SSH_PRIVATE_KEY }} script: | export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" From 8595d4f51d2996de3aac0dcab5d0018932ef9d3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Morais?= Date: Thu, 19 Feb 2026 11:54:46 -0800 Subject: [PATCH 3/7] change deploy folder --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 74827d10..c0a603b7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -28,7 +28,7 @@ jobs: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" - DEPLOY_DIR=/opt/loglife/preview + DEPLOY_DIR="$HOME/loglife-preview" APP_NAME=loglife-preview PORT=3001 BRANCH=${{ github.head_ref }} From a66cc8cd0ce2811e2d9e303c80915fef32cc01ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Morais?= Date: Thu, 19 Feb 2026 11:55:37 -0800 Subject: [PATCH 4/7] Update deploy workflow to use dynamic concurrency group and add error handling --- .github/workflows/deploy.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c0a603b7..44d9b541 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -10,7 +10,7 @@ on: - reopened concurrency: - group: deploy-preview + group: deploy-preview-${{ github.event.pull_request.number }} cancel-in-progress: true jobs: @@ -25,6 +25,8 @@ jobs: username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | + set -e + export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" From 13f1793fac847d3d38fb7859ae0e7b8da2295e66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Morais?= Date: Thu, 19 Feb 2026 11:56:42 -0800 Subject: [PATCH 5/7] Add environment variable for Clerk publishable key in deploy workflow --- .github/workflows/deploy.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 44d9b541..17ed1d60 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -20,10 +20,13 @@ jobs: steps: - name: Deploy to server uses: appleboy/ssh-action@v1 + env: + NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }} with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} + envs: NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY script: | set -e From 8376bf6d9215c1394c4afa7925f2356e6a71e00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Morais?= Date: Thu, 19 Feb 2026 11:58:54 -0800 Subject: [PATCH 6/7] switch to systemd --- .github/workflows/deploy.yml | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 17ed1d60..16bbae2a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -51,6 +51,28 @@ jobs: pnpm install --frozen-lockfile pnpm run build - pm2 delete "$APP_NAME" || true - PORT=$PORT pm2 start pnpm --name "$APP_NAME" -- start --port $PORT - pm2 save + PNPM_PATH=$(which pnpm) + NODE_PATH=$(which node) + + mkdir -p "$HOME/.config/systemd/user" + cat > "$HOME/.config/systemd/user/$APP_NAME.service" < Date: Thu, 19 Feb 2026 12:00:01 -0800 Subject: [PATCH 7/7] fix systemd stuff deploy GH actions --- .github/workflows/deploy.yml | 38 ++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 16bbae2a..2b0b2016 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -51,27 +51,27 @@ jobs: pnpm install --frozen-lockfile pnpm run build - PNPM_PATH=$(which pnpm) - NODE_PATH=$(which node) + NODE_BIN=$(which node) + NEXT_BIN="$DEPLOY_DIR/website/node_modules/.bin/next" mkdir -p "$HOME/.config/systemd/user" - cat > "$HOME/.config/systemd/user/$APP_NAME.service" < "$HOME/.config/systemd/user/$APP_NAME.service" systemctl --user daemon-reload systemctl --user enable "$APP_NAME"