Files
rmcampos 70d2d22055
Build & Deploy to Pages / build-deploy (push) Successful in 4m10s
Update .github/workflows/deploy.yml
2026-07-04 21:55:24 +00:00

70 lines
2.0 KiB
YAML

name: Build & Deploy to Pages
on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:
branches: [ main ]
# Allow only one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: false
env:
APP_FOLDER: "calories-tracker"
jobs:
build-deploy:
runs-on: easynode-debian
env:
VITE_APPWRITE_PROJECT_ID: ${{ secrets.VITE_APPWRITE_PROJECT_ID }}
VITE_APPWRITE_ENDPOINT: ${{ secrets.VITE_APPWRITE_ENDPOINT }}
VITE_APPWRITE_DBID: ${{ secrets.VITE_APPWRITE_DBID }}
VITE_APPWRITE_FOODENTRIESID: ${{ secrets.VITE_APPWRITE_FOODENTRIESID }}
VITE_APPWRITE_USERSETTINGSID: ${{ secrets.VITE_APPWRITE_USERSETTINGSID }}
VITE_APPWRITE_MONTLYCALORIESID: ${{ secrets.VITE_APPWRITE_MONTLYCALORIESID }}
VITE_APPWRITE_SHAREDDAYSID: ${{ secrets.VITE_APPWRITE_SHAREDDAYSID }}
VITE_CLAUDE_API_KEY: ${{ secrets.VITE_CLAUDE_API_KEY }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Install rsync + ssh client
run: apt-get update -qq && apt-get install -y -qq rsync openssh-client
- name: Configure SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -H "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/known_hosts
- name: Ensure destination folder exists
run: |
ssh -i ~/.ssh/deploy_key deploy@${{ secrets.DEPLOY_HOST }} \
"mkdir -p /srv/sites/${{ env.APP_FOLDER }} && chmod 755 /srv/sites/${{ env.APP_FOLDER }}"
- name: Upload site
run: |
rsync -avz --delete \
-e "ssh -i ~/.ssh/deploy_key" \
./dist/ deploy@${{ secrets.DEPLOY_HOST }}:/srv/sites/${{ env.APP_FOLDER }}/