Enable automatic deletion of remote files that no longer exist locally. This ensures the production server stays in sync with the repository, removing obsolete files like the renamed stylesheet.css. Protected directories (accounts, cache, sessions) remain excluded. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
62 lines
1.7 KiB
YAML
62 lines
1.7 KiB
YAML
name: Deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
deploy:
|
|
name: Build and Deploy to Production
|
|
runs-on: docker
|
|
container:
|
|
image: forgejo-ci-node:latest
|
|
steps:
|
|
- name: Checkout code
|
|
run: |
|
|
git clone --depth 1 --branch main https://forge.studio-variable.com/${{ github.repository }}.git .
|
|
ls -la
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
npm ci
|
|
|
|
- name: Prepare dist directory
|
|
run: |
|
|
rm -rf dist
|
|
cp -r public dist
|
|
ls -la dist/
|
|
|
|
- name: Build Vue app
|
|
run: |
|
|
npm run build
|
|
ls -la dist/assets/dist/
|
|
|
|
- name: Deploy via FTP
|
|
env:
|
|
USERNAME: ${{ secrets.USERNAME }}
|
|
PASSWORD: ${{ secrets.PASSWORD }}
|
|
PRODUCTION_HOST: ${{ secrets.PRODUCTION_HOST }}
|
|
run: |
|
|
cd dist
|
|
lftp -c "
|
|
set ftp:ssl-allow no;
|
|
open -u $USERNAME,$PASSWORD $PRODUCTION_HOST;
|
|
mirror --reverse --delete --verbose --ignore-time --parallel=10 \
|
|
-x 'local/' \
|
|
-x 'css/src/' \
|
|
-x 'css/style.css' \
|
|
-x 'css/style.css.map' \
|
|
-x 'css/style.scss' \
|
|
assets assets;
|
|
mirror --reverse --delete --verbose --ignore-time --parallel=10 \
|
|
-x 'accounts/' \
|
|
-x 'cache/' \
|
|
-x 'sessions/' \
|
|
site site;
|
|
mirror --reverse --delete --verbose --ignore-time --parallel=10 \
|
|
kirby kirby;
|
|
mirror --reverse --delete --verbose --ignore-time --parallel=10 \
|
|
vendor vendor;
|
|
put index.php -o index.php;
|
|
quit"
|