name: Deploy Server on: push: tags: - 'server-v[0-9]*.[0-9]*.[0-9]*' concurrency: group: deploy-server cancel-in-progress: false jobs: release-deploy-server: runs-on: mac env: GOPROXY: https://goproxy.cn,direct PUB_HOSTED_URL: https://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn steps: - uses: actions/checkout@v4 - name: Provision (idempotent — auto-runs if host not initialized) run: sh scripts/ci/provision-mac.sh - name: Compile (Linux backend + configs) run: sh scripts/ci/compile-backend.sh "${{ gitea.ref_name }}" - name: Test (go test) run: sh scripts/ci/test.sh server - name: Release env: FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }} FORGEJO_URL: ${{ secrets.FORGEJO_URL }} GITEA_REPOSITORY: ${{ gitea.repository }} run: sh scripts/ci/release-server.sh "${{ gitea.ref_name }}" - name: Deploy env: FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }} FORGEJO_URL: ${{ secrets.FORGEJO_URL }} GITEA_REPOSITORY: ${{ gitea.repository }} EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }} EC2_HOST: ${{ secrets.EC2_HOST }} EC2_USER: ${{ secrets.EC2_USER }} run: sh scripts/ci/deploy-server.sh "${{ gitea.ref_name }}" - name: Notify if: always() env: TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} run: sh scripts/ci/notify.sh "${{ gitea.ref_name }}" "${{ job.status }}"