name: CI on: push: branches: [main] tags: ["v*"] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest timeout-minutes: 10 strategy: matrix: python: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} - run: python -m pip install --upgrade pip - run: pip install -e .[test] - run: pytest -v build-pyz: runs-on: ubuntu-latest needs: test if: github.event_name == 'push' steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - run: make build - if: startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: cloud-sync-pyz path: cloud-sync.pyz release: runs-on: ubuntu-latest needs: build-pyz if: startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: cloud-sync-pyz - name: Publish release run: | gh_token="${{ secrets.RELEASE_TOKEN }}" tag="${GITEA_REF#refs/tags/}" curl -sS -X POST \ -H "Authorization: token ${gh_token}" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"${tag}\",\"name\":\"${tag}\",\"draft\":false,\"prerelease\":false}" \ "${GITEA_SERVER_URL}/api/v1/repos/${{ gitea.event.repository.full_name }}/releases" > /tmp/release.json release_id=$(jq -r .id /tmp/release.json) curl -sS -X POST \ -H "Authorization: token ${gh_token}" \ -F "attachment=@cloud-sync.pyz" \ "${GITEA_SERVER_URL}/api/v1/repos/${{ gitea.event.repository.full_name }}/releases/${release_id}/assets?name=cloud-sync.pyz"