diff --git a/.github/workflows/publish-versions.yml b/.github/workflows/publish-versions.yml index 54a0a1ba..226cdeef 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