143 lines
5.6 KiB
YAML
143 lines
5.6 KiB
YAML
name: Run Testing Tool Commands
|
|
on:
|
|
issue_comment:
|
|
types: [created]
|
|
jobs:
|
|
set-params:
|
|
# Only allow slash commands on pull request (not on issues)
|
|
if: ${{ github.event.issue.pull_request }}
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
repo: ${{ steps.getref.outputs.repo }}
|
|
ref: ${{ steps.getref.outputs.ref }}
|
|
comment-id: ${{ steps.comment-info.outputs.comment-id }}
|
|
command: ${{ steps.regex.outputs.first_match }}
|
|
steps:
|
|
- name: Checkout Airbyte
|
|
uses: actions/checkout@v3
|
|
- name: Check PAT rate limits
|
|
run: |
|
|
./tools/bin/find_non_rate_limited_PAT \
|
|
${{ secrets.AIRBYTEIO_PAT }} \
|
|
${{ secrets.OSS_BUILD_RUNNER_GITHUB_PAT }} \
|
|
${{ secrets.SUPERTOPHER_PAT }} \
|
|
${{ secrets.DAVINCHIA_PAT }}
|
|
- name: Get PR repo and ref
|
|
id: getref
|
|
run: |
|
|
pr_info="$(curl ${{ github.event.issue.pull_request.url }})"
|
|
echo ref="$(echo $pr_info | jq -r '.head.ref')" >> $GITHUB_OUTPUT
|
|
echo repo="$(echo $pr_info | jq -r '.head.repo.full_name')" >> $GITHUB_OUTPUT
|
|
- name: Get comment id
|
|
id: comment-info
|
|
run: |
|
|
echo comment-id="${{ github.event.comment.id }}" >> $GITHUB_OUTPUT
|
|
- name: Get command
|
|
id: regex
|
|
uses: AsasInnab/regex-action@v1
|
|
with:
|
|
regex_pattern: "^/[a-zA-Z0-9_/-]+"
|
|
regex_flags: "i"
|
|
search_string: ${{ github.event.comment.body }}
|
|
helps-run:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
needs.set-params.outputs.command == '/help-full' ||
|
|
needs.set-params.outputs.command == '/help' ||
|
|
needs.set-params.outputs.command == '/list-scenarios'
|
|
needs: set-params
|
|
steps:
|
|
- name: Update comment for processing
|
|
uses: peter-evans/create-or-update-comment@v1
|
|
with:
|
|
comment-id: ${{ needs.set-params.outputs.comment-id }}
|
|
reactions: eyes, rocket
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v1
|
|
- name: Pull Testing Tool docker image
|
|
run: docker pull airbyte/airbyte-e2e-testing-tool:latest
|
|
- name: Create input and output folders
|
|
run: |
|
|
mkdir secrets
|
|
mkdir result
|
|
- name: Run docker container with params
|
|
run: docker run -v $(pwd)/secrets:/secrets -v $(pwd)/result:/result airbyte/airbyte-e2e-testing-tool:latest ${{ github.event.comment.body }}
|
|
- name: Read file with results
|
|
id: read_file
|
|
uses: andstor/file-reader-action@v1
|
|
with:
|
|
path: "result/log"
|
|
- name: Add Success Comment
|
|
if: needs.set-params.outputs.comment-id && success()
|
|
uses: peter-evans/create-or-update-comment@v1
|
|
with:
|
|
comment-id: ${{ needs.set-params.outputs.comment-id }}
|
|
body: |
|
|
> :white_check_mark: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
|
${{ steps.read_file.outputs.contents }}
|
|
reactions: +1
|
|
- name: Add Failure Comment
|
|
if: needs.set-params.outputs.comment-id && failure()
|
|
uses: peter-evans/create-or-update-comment@v1
|
|
with:
|
|
comment-id: ${{ needs.set-params.outputs.comment-id }}
|
|
body: |
|
|
> :x: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
|
reactions: -1
|
|
scenarios-run:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
needs.set-params.outputs.command == '/run-scenario' ||
|
|
needs.set-params.outputs.command == '/run-scenario-local'
|
|
needs: set-params
|
|
steps:
|
|
- name: Update comment for processing
|
|
uses: peter-evans/create-or-update-comment@v1
|
|
with:
|
|
comment-id: ${{ needs.set-params.outputs.comment-id }}
|
|
reactions: eyes, rocket
|
|
- name: Checkout Airbyte
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ needs.set-params.outputs.repo }}
|
|
ref: ${{ needs.set-params.outputs.ref }}
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v1
|
|
- name: Pull Testing Tool docker image
|
|
run: docker pull airbyte/airbyte-e2e-testing-tool:latest
|
|
- name: Change wrapper permissions
|
|
run: |
|
|
mkdir secrets
|
|
mkdir result
|
|
- name: Run Airbyte
|
|
run: docker-compose up -d
|
|
- name: Connect to secret manager
|
|
uses: jsdaniell/create-json@1.1.2
|
|
with:
|
|
name: "/secrets/service_account_credentials.json"
|
|
json: ${{ secrets.GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL }}
|
|
- name: Run docker container with params
|
|
run: docker run -v $(pwd)/secrets:/secrets -v $(pwd)/result:/result airbyte/airbyte-e2e-testing-tool:latest ${{ github.event.comment.body }}
|
|
- name: Read file with results
|
|
id: read_file
|
|
uses: andstor/file-reader-action@v1
|
|
with:
|
|
path: "result/log"
|
|
- name: Add Success Comment
|
|
if: needs.set-params.outputs.comment-id && success()
|
|
uses: peter-evans/create-or-update-comment@v1
|
|
with:
|
|
comment-id: ${{ needs.set-params.outputs.comment-id }}
|
|
body: |
|
|
> :white_check_mark: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
|
${{ steps.read_file.outputs.contents }}
|
|
reactions: +1
|
|
- name: Add Failure Comment
|
|
if: needs.set-params.outputs.comment-id && failure()
|
|
uses: peter-evans/create-or-update-comment@v1
|
|
with:
|
|
comment-id: ${{ needs.set-params.outputs.comment-id }}
|
|
body: |
|
|
> :x: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
|
reactions: -1
|