kevinjqliu commented on code in PR #1391: URL: https://github.com/apache/iceberg-python/pull/1391#discussion_r1938565110
########## .github/workflows/python-release.yml: ########## @@ -17,29 +17,192 @@ # under the License. # -name: "Python Release" +name: "Python Build Release Candidate" on: + push: + tags: + # Trigger this workflow when tag follows the versioning format: pyiceberg-<major>.<minor>.<patch>rc<release_candidate> + # Example valid tags: pyiceberg-0.8.0rc2, pyiceberg-1.0.0rc1 + - 'pyiceberg-[0-9]+.[0-9]+.[0-9]+rc[0-9]+' workflow_dispatch: inputs: version: - description: 'Version' + description: 'Version (e.g., 0.8.0)' type: string - default: 'main' - + required: true + rc: + description: 'Release Candidate (RC) (e.g., 1)' + type: number + required: true jobs: - build_wheels: - name: Build wheels on ${{ matrix.os }} + validate-inputs: + runs-on: ubuntu-latest + outputs: + VERSION: ${{ steps.validate-inputs.outputs.VERSION }} # e.g. 0.8.0 + RC: ${{ steps.validate-inputs.outputs.RC }} # e.g. 1 + steps: + - name: Validate and Extract Version and RC + id: validate-inputs + run: | + if [ "$GITHUB_EVENT_NAME" = "push" ]; then + echo "Workflow triggered by tag push." + TAG=${GITHUB_REF#refs/tags/} # Extract the tag name + VERSION_AND_RC=${TAG#pyiceberg-} # Remove the 'pyiceberg-' prefix + VERSION=${VERSION_AND_RC%rc*} # Extract VERSION by removing everything after 'rc' + RC=${VERSION_AND_RC#*rc} # Extract RC by keeping everything after 'rc' + + if [[ -z "$VERSION" || -z "$RC" ]]; then + echo "Error: Unable to parse VERSION or RC from tag ($TAG). Ensure the tag format is correct." + exit 1 + fi + else + echo "Workflow triggered manually via workflow_dispatch." + VERSION="${{ github.event.inputs.version }}" + RC="${{ github.event.inputs.rc }}" + + # Validate version (e.g., 1.0.0) + if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Error: version ($VERSION) must be in the format: <number>.<number>.<number>" + exit 1 + fi + + # Validate rc (e.g., 1) + if [[ ! "$RC" =~ ^[0-9]+$ ]]; then + echo "Error: rc ($RC) must be in the format: <number>" + exit 1 + fi + fi + + # Export variables for future steps + echo "VERSION=$VERSION" >> $GITHUB_OUTPUT + echo "RC=$RC" >> $GITHUB_OUTPUT + + - name: Display Extracted Version and RC + run: | + echo "Using Version: ${{ steps.validate-inputs.outputs.VERSION }}" + echo "Using RC: ${{ steps.validate-inputs.outputs.RC }}" + + validate-library-version: + runs-on: ubuntu-latest + needs: + - validate-inputs + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - uses: actions/setup-python@v5 + with: + python-version: 3.12 + + - name: Install Poetry + run: | + pip install poetry Review Comment: good catch! changed we use `make install-poetry` in other places for github action https://grep.app/search?f.repo=apache%2Ficeberg-python&f.repo.pattern=iceberg-python&q=make+install-poetry -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org