name: Deploy to Test on: push jobs: deploy: runs-on: ubuntu-22.04 timeout-minutes: 20 # 延长超时时间[1](@ref) steps: - name: Checkout code uses: actions/checkout@v4 with: # 指定分支、标签或提交哈希 ref: dev # 拉取深度(节省时间与带宽) fetch-depth: 0 # 0 表示拉取完整的历史 - name: Replace Debian APT sources run: | tee /etc/apt/sources.list < $SSH_DIR/id_rsa whoami echo $USER echo "$SSH_PRIVATE_KEY" chmod 700 $SSH_DIR chmod 600 $SSH_DIR/id_rsa ssh-keyscan 43.142.97.39 >> $SSH_DIR/known_hosts - name: Sync code run: | rsync -avz --delete --exclude=".env" \ -e "ssh -o StrictHostKeyChecking=no -i /home/runner/.ssh/id_rsa" \ ./ deploy-user@43.142.97.39:/data/laravel_test/ - name: Deploy containers env: COMPOSE_PROJECT: "laravel_test" run: | ssh -i /home/runner/.ssh/id_rsa deploy-user@43.142.97.39 << 'EOF' cd /data/laravel_test # 使用docker-compose插件模式 docker compose -p $COMPOSE_PROJECT down --volumes docker compose -p $COMPOSE_PROJECT up -d --build # 等待容器启动 sleep 10 docker exec ${COMPOSE_PROJECT}-php-1 php artisan config:cache docker exec ${COMPOSE_PROJECT}-php-1 php artisan migrate --force docker exec ${COMPOSE_PROJECT}-nginx-1 nginx -s reload EOF