name: star-cloud-deploy-production on: push: branches: - main # 或是正式環境分支 jobs: deploy-production: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Install SSH Key uses: shimataro/ssh-key-action@v2 with: key: ${{ secrets.PROD_SSH_PRIVATE_KEY }} known_hosts: ${{ secrets.PROD_KNOWN_HOSTS }} - name: Step 1 - Sync Code to Server run: | rsync -avz --delete \ --exclude='.git' \ --exclude='node_modules' \ --exclude='vendor' \ --exclude='storage' \ --exclude='bootstrap/cache' \ ./ twsystem1003@34.84.169.132:~/star-cloud/ - name: Step 2 - Execute Remote Deployment Commands run: | ssh twsystem1003@34.84.169.132 "cd ~/star-cloud && \ WWWGROUP=1001 WWWUSER=1001 docker compose up -d --build && \ docker exec -u 1001:1001 star-cloud-laravel composer install --no-dev --optimize-autoloader && \ docker exec -u 1001:1001 star-cloud-laravel npm install && \ docker exec -u 1001:1001 star-cloud-laravel npm run build && \ docker exec -u 1001:1001 star-cloud-laravel php artisan migrate --force && \ docker exec -u 1001:1001 star-cloud-laravel php artisan optimize:clear && \ docker exec -u 1001:1001 star-cloud-laravel php artisan optimize && \ docker exec -u 1001:1001 star-cloud-laravel php artisan db:seed --class=RoleSeeder --force && \ docker exec -u 1001:1001 star-cloud-laravel php artisan db:seed --class=AdminUserSeeder --force && \ docker restart star-cloud-mqtt-worker"