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: ./tools/bin/pull_image.sh -i 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: ./tools/bin/pull_image.sh -i 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