60 lines
2.0 KiB
YAML
60 lines
2.0 KiB
YAML
name: Build and Deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
verify:
|
|
runs-on: laralog-ci
|
|
steps:
|
|
- uses: https://gitea.neatcn.com/gouki/action-checkout@v4
|
|
- name: Verify CI runtime
|
|
run: |
|
|
php -r 'exit(PHP_VERSION_ID >= 80200 ? 0 : 1);'
|
|
node --version
|
|
composer --version
|
|
- name: Prepare env (sqlite for package discovery)
|
|
run: |
|
|
cp .env.example .env
|
|
php artisan key:generate --force
|
|
mkdir -p database
|
|
touch database/database.sqlite
|
|
- name: Install backend dependencies
|
|
run: |
|
|
composer install --no-interaction --prefer-dist
|
|
npm install
|
|
- name: Build backend assets
|
|
run: npm run build
|
|
- name: Persist built assets for deploy job
|
|
run: |
|
|
dest="/ci-artifacts/build-${{ gitea.sha }}"
|
|
test -d /ci-artifacts
|
|
rm -rf "$dest"
|
|
mkdir -p "$dest"
|
|
cp -a public/build/. "$dest/"
|
|
test -f "$dest/manifest.json"
|
|
|
|
deploy:
|
|
needs: verify
|
|
runs-on: production
|
|
steps:
|
|
- uses: https://gitea.neatcn.com/gouki/action-checkout@v4
|
|
- name: Restore built assets from runner host
|
|
run: |
|
|
src="/opt/laralog/ci-artifacts/build-${{ gitea.sha }}"
|
|
test -d "$src"
|
|
mkdir -p public/build
|
|
cp -a "$src/." public/build/
|
|
test -f public/build/manifest.json
|
|
- uses: https://gitea.neatcn.com/gouki/deployment-toolkit/actions/laravel-release@v1.0.6
|
|
with:
|
|
source-dir: .
|
|
deploy-root: /opt/1panel/apps/openresty/openresty/www/sites/laralog.neatstudio.com/index
|
|
container-deploy-root: /www/sites/laralog.neatstudio.com/index
|
|
php-container: php83-1panel-php-1
|
|
healthcheck-url: https://laralog.neatstudio.com/up
|
|
backup-command: "mysqldump -h10.0.4.7 -ularalog -p'Laralog#2026' laralog | gzip > /opt/laralog/backups/laralog-${{ gitea.sha }}.sql.gz"
|
|
release-id: ${{ gitea.sha }}
|