name: Release on: push: branches: [main] tags: ['v*'] jobs: validate: name: Validate Templates runs-on: linux-amd64-docker-small steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.25.x' - uses: actions/setup-python@v5 with: python-version: '3.11' - name: Test workflow scripts run: python -B -m unittest discover -s .github/scripts -p 'test_*.py' - name: Verify pinned official snapshot working-directory: tools run: | go run . upstream prepare go run . upstream verify - name: Test — framework alignment and multilingual notification parity working-directory: tools run: go test ./... - name: Build and render all themes and official languages working-directory: tools run: go run . preview all package: name: Package & Release if: startsWith(github.ref, 'refs/tags/v') needs: validate runs-on: linux-amd64-docker-small permissions: contents: write steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GITEA_TOKEN }} - uses: actions/setup-go@v5 with: go-version: '1.25.x' - uses: actions/setup-python@v5 with: python-version: '3.11' - name: Verify release tag matches the official snapshot run: | python -c 'import json, os; lock=json.load(open("gitea.lock.json")); assert lock["tag"] == os.environ["GITHUB_REF_NAME"], "Release tag must match the pinned Gitea tag"' - name: Verify release notes run: test -s ".github/release-notes/${GITHUB_REF_NAME}.md" - name: Generate static preview for the archive working-directory: tools run: go run . preview all - name: Package generated installable themes and multilingual preview run: python -B .github/scripts/package_release.py --version "$TEMPLATE_RELEASE" env: TEMPLATE_RELEASE: ${{ github.ref_name }} - name: Create Release run: python -B .github/scripts/gitea_actions.py publish-release --version "$TEMPLATE_RELEASE" env: TEMPLATE_RELEASE: ${{ github.ref_name }} GITEA_SERVER_URL: ${{ github.server_url }} GITEA_REPOSITORY: ${{ github.repository }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} notify-release-docs: name: Remind to Update Release Documentation if: startsWith(github.ref, 'refs/tags/v') needs: package concurrency: group: release-documentation-${{ github.ref }} cancel-in-progress: false runs-on: linux-amd64-docker-small permissions: contents: read issues: write steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11' - name: Create documentation reminder Issue run: python -B .github/scripts/gitea_actions.py create-issue --version "$TEMPLATE_RELEASE" env: TEMPLATE_RELEASE: ${{ github.ref_name }} GITEA_SERVER_URL: ${{ github.server_url }} GITEA_REPOSITORY: ${{ github.repository }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}