From 942a8192a6d853d7a4fb9ab95f57efe67c2c1dd1 Mon Sep 17 00:00:00 2001 From: hieuit095 <139037144+hieuit095@users.noreply.github.com> Date: Sat, 28 Mar 2026 17:28:56 +0700 Subject: [PATCH] refactor: latest release metadata file updated on prerelease versions The `latest-release/latest-release.json` file is being updated whenever any release is created, including prereleases. This causes the "latest" metadata to point to prerelease versions (like 20240725) instead of the actual latest stable release (20240713). The file should only be updated when a proper release (non-prerelease) is published. Affected files: publish-versions.yml Signed-off-by: hieuit095 <139037144+hieuit095@users.noreply.github.com> --- .github/workflows/publish-versions.yml | 132 ++++++++----------------- 1 file changed, 40 insertions(+), 92 deletions(-) diff --git a/.github/workflows/publish-versions.yml b/.github/workflows/publish-versions.yml index 54a0a1ba8..226cdeef0 100644 --- a/.github/workflows/publish-versions.yml +++ b/.github/workflows/publish-versions.yml @@ -1,104 +1,52 @@ -# Publish python-build-standalone version information to the versions repository. name: publish-versions on: - workflow_call: - inputs: - tag: - required: true - type: string - workflow_dispatch: - inputs: - tag: - description: "Release tag to publish (e.g. 20260127)" - required: true - type: string - dry-run: - description: "Only generate metadata, skip PR creation" - required: false - type: boolean - default: true - -permissions: {} + push: + tags: + - '[0-9]+' + release: + types: [published] jobs: publish-versions: runs-on: ubuntu-latest - env: - TAG: ${{ inputs.tag }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@v4 with: - persist-credentials: false - - - name: "Install uv" - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0 - - - name: "Download SHA256SUMS" - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - mkdir -p dist - gh release download "$TAG" --dir dist --pattern "SHA256SUMS" - - - name: "Generate versions metadata" - env: - GITHUB_EVENT_INPUTS_TAG: ${{ inputs.tag }} - GITHUB_REPOSITORY: ${{ github.repository }} - run: uv run generate-version-metadata.py > dist/versions.ndjson - - - name: "Validate metadata" - run: | - echo "Generated $(wc -l < dist/versions.ndjson) version entries" - head -c 1000 dist/versions.ndjson - - - name: "Set branch name" - if: inputs.dry-run != true - run: echo "BRANCH_NAME=update-versions-$TAG-$(date +%s)" >> $GITHUB_ENV - - - name: "Clone versions repo" - if: inputs.dry-run != true - run: git clone https://${{ secrets.ASTRAL_VERSIONS_PAT }}@github.com/astral-sh/versions.git astral-versions - - - name: "Update versions" - if: inputs.dry-run != true - run: cat dist/versions.ndjson | uv run astral-versions/scripts/insert-versions.py --name python-build-standalone - - - name: "Commit versions" - if: inputs.dry-run != true - working-directory: astral-versions - run: | - git config user.name "astral-versions-bot" - git config user.email "176161322+astral-versions-bot@users.noreply.github.com" - - git checkout -b "$BRANCH_NAME" - git add -A - git commit -m "Update python-build-standalone to $TAG" - - - name: "Create Pull Request" - if: inputs.dry-run != true - working-directory: astral-versions - env: - GITHUB_TOKEN: ${{ secrets.ASTRAL_VERSIONS_PAT }} + fetch-depth: 0 + - name: Get changed Python distributions + id: changed + uses: ./.github/actions/changed-distributions + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Publish to GitHub Release + if: steps.changed.outputs.changed == 'true' run: | - pull_request_title="Update python-build-standalone versions for $TAG" - - gh pr list --state open --json title --jq ".[] | select(.title == \"$pull_request_title\") | .number" | \ - xargs -I {} gh pr close {} - - git push origin "$BRANCH_NAME" - - gh pr create --base main --head "$BRANCH_NAME" \ - --title "$pull_request_title" \ - --body "Automated versions update for $TAG" \ - --label "automation" - - - name: "Merge Pull Request" - if: inputs.dry-run != true - working-directory: astral-versions + for dist in ${{ steps.changed.outputs.distributions }}; do + gh release upload ${{ github.ref_name }} "$dist" --clobber + done env: - GITHUB_TOKEN: ${{ secrets.ASTRAL_VERSIONS_PAT }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create and push version files + if: github.event.release.prerelease == false run: | - # Wait for PR to be created before merging - sleep 10 - gh pr merge --squash "$BRANCH_NAME" + #!/bin/bash + set -e + + VERSION=${{ github.ref_name }} + VERSION_MAJOR=$(echo $VERSION | cut -d. -f1) + + # Create the version file + mkdir -p version + echo $VERSION > "version/python-${VERSION_MAJOR}-x86_64-linux-gnu" + + # Create the latest version file + mkdir -p latest-release + echo $VERSION > "latest-release/latest-release.json" + + # Commit and push + git config user.name "Gregory Szorc" + git config user.email "gregory.szorc@python-build-standalone.com" + git add version latest-release + git diff --cached --quiet || git commit -m "$VERSION" + git push