This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 2b4173c4cd Triggering extended tests through PR comment: `Run extended 
tests` (#15101)
2b4173c4cd is described below

commit 2b4173c4cd3c36ede7814caee4de582fe580f299
Author: Danila Baklazhenko <61026361+danil...@users.noreply.github.com>
AuthorDate: Thu Mar 27 21:16:04 2025 +0200

    Triggering extended tests through PR comment: `Run extended tests` (#15101)
    
    * Add custom trigger for extended tests
    
    * Add workflow dispatch
    
    * Try different templating for ref path
    
    * Add checkout
    
    * Use branch name directly
    
    * Add js action to fetch branch name
    
    * Post check on PR
    
    * Fix owner and repo name
    
    * Remove unused vars
    
    * Add permissions for check write
    
    * Add check updates
    
    * Add lighweight test
    
    * Uncomment needs
    
    * Add comments for new actions
---
 .github/workflows/extended.yml            | 60 ++++++++++++++++++++-
 .github/workflows/pr_comment_commands.yml | 89 +++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/extended.yml b/.github/workflows/extended.yml
index 3942e75257..a5d68ff079 100644
--- a/.github/workflows/extended.yml
+++ b/.github/workflows/extended.yml
@@ -30,8 +30,26 @@ concurrency:
 # in the (very rare) event of a hash failure or sqlite library query failure.
 on:
   push:
+    branches:
+      - main
+  workflow_dispatch:
+    inputs:
+      pr_number:
+        description: 'Pull request number'
+        type: string
+      check_run_id:
+        description: 'Check run ID for status updates'
+        type: string
+      pr_head_sha:
+        description: 'PR head SHA'
+        type: string
 
+permissions:
+  contents: read
+  checks: write
+      
 jobs:
+
   # Check crate compiles and base cargo check passes
   linux-build-lib:
     name: linux build test
@@ -57,7 +75,7 @@ jobs:
   # Run extended tests (with feature 'extended_tests')
   linux-test-extended:
     name: cargo test 'extended_tests' (amd64)
-    needs: linux-build-lib
+    needs: [linux-build-lib]
     runs-on: ubuntu-latest
     # note: do not use amd/rust container to preserve disk space
     steps:
@@ -127,4 +145,44 @@ jobs:
           cargo test --features backtrace --profile release-nonlto --test 
sqllogictests -- --include-sqlite
           cargo clean
 
+  # If the workflow was triggered by the PR comment (through 
pr_comment_commands.yml action) we need to manually update check status to 
display in UI
+  update-check-status:
+    needs: [linux-build-lib, linux-test-extended, hash-collisions, 
sqllogictest-sqlite]
+    runs-on: ubuntu-latest
+    if: ${{ always() && github.event_name == 'workflow_dispatch' }}
+    steps:
+      - name: Determine workflow status
+        id: status
+        run: |
+          if [[ "${{ contains(needs.*.result, 'failure') || 
contains(needs.*.result, 'cancelled') }}" == "true" ]]; then
+            echo "workflow_status=failure" >> $GITHUB_OUTPUT
+            echo "conclusion=failure" >> $GITHUB_OUTPUT
+          else
+            echo "workflow_status=completed" >> $GITHUB_OUTPUT
+            echo "conclusion=success" >> $GITHUB_OUTPUT
+          fi
+      
+      - name: Update check run
+        uses: actions/github-script@v7
+        with:
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+          script: |
+            const workflowRunUrl = 
`https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
+            
+            await github.rest.checks.update({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              check_run_id: ${{ github.event.inputs.check_run_id }},
+              status: 'completed',
+              conclusion: '${{ steps.status.outputs.conclusion }}',
+              output: {
+                title: '${{ steps.status.outputs.conclusion == 'success' && 
'Extended Tests Passed' || 'Extended Tests Failed' }}',
+                summary: `Extended tests have completed with status: ${{ 
steps.status.outputs.conclusion }}.\n\n[View workflow run](${workflowRunUrl})`
+              },
+              details_url: workflowRunUrl
+            });
+
+
+
+
 
diff --git a/.github/workflows/pr_comment_commands.yml 
b/.github/workflows/pr_comment_commands.yml
new file mode 100644
index 0000000000..a20a5b1596
--- /dev/null
+++ b/.github/workflows/pr_comment_commands.yml
@@ -0,0 +1,89 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: PR commands
+
+on:
+  issue_comment:
+    types: [created]
+
+permissions:
+  contents: read
+  pull-requests: write
+  actions: write
+  checks: write
+
+jobs:
+  # Starts the extended_tests on a PR branch when someone leaves a `Run 
extended tests` comment
+  run_extended_tests:
+    runs-on: ubuntu-latest
+    if: ${{ github.event_name == 'issue_comment' && 
github.event.issue.pull_request && contains(github.event.comment.body, 'Run 
extended tests') }}
+    steps:
+      - name: Dispatch extended tests for a PR branch with comment
+        uses: actions/github-script@v7
+        with:
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+          script: |
+            // Get PR details to fetch the branch name
+            const { data: pullRequest } = await github.rest.pulls.get({
+                owner: context.repo.owner,
+                repo: context.repo.repo,
+                pull_number: context.payload.issue.number
+            });
+            
+            // Extract the branch name
+            const branchName = pullRequest.head.ref;
+            const headSha = pullRequest.head.sha;
+            const workflowRunsUrl = 
`https://github.com/${context.repo.owner}/${context.repo.repo}/actions?query=workflow%3A%22Datafusion+extended+tests%22+branch%3A${branchName}`;
+            
+            // Create a check run that links to the Actions tab so the run 
will be visible in GitHub UI
+            const check = await github.rest.checks.create({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              name: 'Extended Tests',
+              head_sha: headSha,
+              status: 'in_progress',
+              output: {
+                title: 'Extended Tests Running',
+                summary: `Extended tests have been triggered for this 
PR.\n\n[View workflow runs](${workflowRunsUrl})`
+              },
+              details_url: workflowRunsUrl
+            });
+
+            // Dispatch the workflow with the PR branch name
+            await github.rest.actions.createWorkflowDispatch({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              workflow_id: 'extended.yml',
+              ref: branchName,
+              inputs: {
+                pr_number: context.payload.issue.number.toString(),
+                check_run_id: check.data.id.toString(),
+                pr_head_sha: headSha
+              }
+            });
+
+      - name: Add reaction to comment 
+        uses: actions/github-script@v7
+        with:
+          script: |
+            await github.rest.reactions.createForIssueComment({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              comment_id: context.payload.comment.id,
+              content: 'rocket'
+            });
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@datafusion.apache.org
For additional commands, e-mail: commits-h...@datafusion.apache.org

Reply via email to