name: Deploy to Test on: [push] jobs: deploy: runs-on: [self-hosted, php-7.3] timeout-minutes: 20 # 延长超时时间[1](@ref) steps: - name: Checkout code uses: actions/checkout@v4 - name: Install SSH tools run: | sudo apt-get update && sudo apt-get install -y openssh-client rsync - name: Configure SSH env: SSH_PRIVATE_KEY: ${{ secrets.TEST_SSH_KEY }} run: | SSH_DIR="/home/runner/.ssh" mkdir -p $SSH_DIR echo "$SSH_PRIVATE_KEY" > $SSH_DIR/id_rsa 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