Fokko commented on code in PR #1391: URL: https://github.com/apache/iceberg-python/pull/1391#discussion_r1938573122
########## .github/workflows/python-release.yml: ########## @@ -17,29 +17,118 @@ # 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: make install-poetry + + - name: Validate current pyiceberg version + env: + VERSION: ${{ needs.validate-inputs.outputs.VERSION }} + run: | + # Extract the current version from Poetry + current_pyiceberg_version=$(poetry version --short) + echo "Detected Poetry version: $current_pyiceberg_version" + + # Compare the input version with the Poetry version + if [[ "$VERSION" != "$current_pyiceberg_version" ]]; then + echo "Error: Input version ($VERSION) does not match the Poetry version ($current_pyiceberg_version)" + exit 1 + fi + + # SVN + svn_build_artifacts: Review Comment: For consistency, should we use dashes here? ```suggestion svn-build-artifacts: ``` -- 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