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

Reply via email to