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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]