Skip to content

Commit

Permalink
[Internal] Add test instructions for external contributors (#370)
Browse files Browse the repository at this point in the history
Add test instructions for external contributors

See Go Changes
databricks/databricks-sdk-go#1073
  • Loading branch information
hectorcast-db committed Oct 31, 2024
1 parent 779b6e3 commit fb64672
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 2 deletions.
82 changes: 82 additions & 0 deletions .github/workflows/external-message.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: PR Comment

# WARNING:
# THIS WORKFLOW ALWAYS RUNS FOR EXTERNAL CONTRIBUTORS WITHOUT ANY APPROVAL.
# THIS WORKFLOW RUNS FROM MAIN BRANCH, NOT FROM THE PR BRANCH.
# DO NOT PULL THE PR OR EXECUTE ANY CODE FROM THE PR.

on:
pull_request_target:
types: [opened, reopened, synchronize]
branches:
- main
pull_request:
types: [opened, synchronize]


jobs:
comment-on-pr:
runs-on: ubuntu-latest
permissions:
pull-requests: write

steps:
- uses: actions/checkout@v4

# If the user has a token, the integration-tests.yml workflow will write a message. Wait
# and check if the message is present.
- name: Wait for 30 seconds
run: sleep 30
shell: bash

- name: Check for integration tests comment
id: check-secrets-access
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
comment_found=$(gh pr view $PR_NUMBER --json comments \
--jq '.comments[].body | select(startswith("<!-- INTEGRATION_TESTS -->"))' \
--repo ${{ github.repository }})
if [ -n "$comment_found" ]; then
echo "has_secrets_access=true" >> $GITHUB_OUTPUT
else
echo "has_secrets_access=false" >> $GITHUB_OUTPUT
fi
# If not found, write a comment for manual execution
- name: Delete old comments
if: steps.check-secrets-access.outputs.has_secrets_access != 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Delete previous comment if it exists
previous_comment_ids=$(gh api "repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments" \
--jq '.[] | select(.body | startswith("<!-- INTEGRATION_TESTS_MANUAL -->")) | .id')
echo "Previous comment IDs: $previous_comment_ids"
# Iterate over each comment ID and delete the comment
if [ ! -z "$previous_comment_ids" ]; then
echo "$previous_comment_ids" | while read -r comment_id; do
echo "Deleting comment with ID: $comment_id"
gh api "repos/${{ github.repository }}/issues/comments/$comment_id" -X DELETE
done
fi
- name: Comment on PR
if: steps.check-secrets-access.outputs.has_secrets_access != 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
run: |
gh pr comment ${{ github.event.pull_request.number }} --body \
"<!-- INTEGRATION_TESTS_MANUAL -->
Run integration tests manually:
[go/deco-tests-run/sdk-java](https://go/deco-tests-run/sdk-java)
Inputs:
* PR number: ${{github.event.pull_request.number}}
* Commit SHA: \`${{ env.COMMIT_SHA }}\`
Checks will be approved automatically on success.
"
21 changes: 19 additions & 2 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,29 @@ on:
merge_group:

jobs:
check-token:
name: Check secrets access
runs-on: ubuntu-latest
outputs:
has_token: ${{ steps.set-token-status.outputs.has_token }}
steps:
- name: Check if GITHUB_TOKEN is set
id: set-token-status
run: |
if [ -z "${{ secrets.GITHUB_TOKEN }}" ]; then
echo "GITHUB_TOKEN is empty. User has no access to tokens."
echo "::set-output name=has_token::false"
else
echo "GITHUB_TOKEN is set. User has access to tokens."
echo "::set-output name=has_token::false"
fi
trigger-tests:
if: github.event_name == 'pull_request'
name: Trigger Tests
runs-on: ubuntu-latest
needs: check-token
if: github.event_name == 'pull_request' && needs.check-token.outputs.has_token == 'true'
environment: "test-trigger-is"

steps:
- uses: actions/checkout@v3

Expand Down

0 comments on commit fb64672

Please sign in to comment.