Files
star-erp/.gitea/workflows/deploy.yaml
sky121113 54d36f51e7
All checks were successful
Koori-ERP-Deploy-System / deploy-demo (push) Has been skipped
Koori-ERP-Deploy-System / deploy-production (push) Successful in 44s
main test
2026-01-06 13:38:38 +08:00

108 lines
4.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Koori-ERP-Deploy-System
on:
push:
branches:
- demo
- main
jobs:
# --- 1. Demo 環境部署 (103 本機) ---
deploy-demo:
if: github.ref == 'refs/heads/demo'
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
github-server-url: http://192.168.0.103:3000
repository: ${{ github.repository }}
- name: Deploy to 103 Demo
run: |
cp .env.example .env
# 設定 Demo 專用的 Key
sed -i "s|APP_KEY=.*|APP_KEY=${{ secrets.APP_KEY }}|g" .env
docker compose up -d --build --wait
# 同步檔案到容器內
tar --exclude='.git' --exclude='node_modules' --exclude='vendor' -cf - . | docker exec -i koori-erp-laravel tar -xf - -C /var/www/html
docker exec koori-erp-laravel chown -R 1000:1000 /var/www/html
docker exec -u 1000:1000 -w /var/www/html koori-erp-laravel sh -c "composer install && npm install && npm run build && php artisan migrate --force && php artisan optimize:clear"
docker exec koori-erp-laravel chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache
# --- 2. 正式環境部署 (erp.koori.tw:2224) ---
deploy-production:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
github-server-url: http://192.168.0.103:3000
repository: ${{ github.repository }}
# 使用 rsync 透過 2224 Port 推送代碼
- name: Push Code to Production
run: |
# 1. 快速安裝工具
apt-get update && apt-get install -y rsync openssh-client
# 2. 準備鑰匙
mkdir -p ~/.ssh
echo "${{ secrets.PROD_SSH_KEY }}" > ~/.ssh/id_rsa_prod
chmod 600 ~/.ssh/id_rsa_prod
# 3. 精簡後的同步指令 (只排除 .git)
rsync -avz --delete \
--exclude='.git' \
--exclude='.env' \
-e "ssh -p 2224 -i ~/.ssh/id_rsa_prod -o StrictHostKeyChecking=no" \
./ root@erp.koori.tw:/var/www/koori-erp-prod/
rm ~/.ssh/id_rsa_prod
# 遠端執行 Docker 指令
- name: Remote Docker Commands
uses: appleboy/ssh-action@master
with:
host: erp.koori.tw
port: 2224 # <--- 這裡指定了 2224 Port
username: root
key: ${{ secrets.PROD_SSH_KEY }}
script: |
# cd /var/www/koori-erp-prod
# chown -R 1000:1000 .
# # 2. 啟動容器
# WWWGROUP=1000 WWWUSER=1000 docker compose up -d --build --wait
# # 3. 執行 Laravel 正式環境優化流程
# docker exec -u 1000:1000 -w /var/www/html koori-erp-laravel sh -c "
# composer install --no-dev --optimize-autoloader &&
# npm install &&
# npm run build &&
# php artisan migrate --force &&
# php artisan config:cache &&
# php artisan route:cache &&
# php artisan view:cache
# "
# docker exec koori-erp-laravel chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache
cd /var/www/koori-erp-prod
# 1. 先確保宿主機目錄權限
chown -R 1000:1000 .
# 2. 啟動容器 (這時 PHP 可能會因為沒 vendor 而暫時噴錯,沒關係)
WWWGROUP=1000 WWWUSER=1000 docker compose up -d --build --wait
# 3. 確保套件完整 (雖然宿主機可能有,但跑這行保險)
docker exec -u 1000:1000 -w /var/www/html koori-erp-laravel composer install --no-dev --optimize-autoloader
# 4. 【神來一筆】強制叫醒 PHP
# 既然 vendor 好了,我們直接叫 Supervisor 把所有服務重啟,就不用手動 down/up 了
docker exec koori-erp-laravel supervisorctl restart all
# 5. 剩下的 Laravel 優化
docker exec -u 1000:1000 -w /var/www/html koori-erp-laravel php artisan optimize:clear
docker exec -u 1000:1000 -w /var/www/html koori-erp-laravel php artisan migrate --force