From fad98bdd0c27abef7f89763d050afd83009f8f4f Mon Sep 17 00:00:00 2001 From: Sayali Gaikawad Date: Wed, 1 May 2024 17:39:52 -0700 Subject: [PATCH] test Signed-off-by: Sayali Gaikawad --- .github/workflows/gradle-check.yml | 232 ++++++++++++++--------------- 1 file changed, 112 insertions(+), 120 deletions(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index e6ab1fdc8c5bf..26999663be2d0 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -12,26 +12,9 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: - check-files: - if: github.repository == 'gaiksaya/OpenSearch' - runs-on: ubuntu-latest - outputs: - RUN_GRADLE_CHECK: ${{steps.changed-files-specific.outputs.any_changed}} - steps: - - uses: actions/checkout@v3 - - name: Get changed files in the docs folder - id: changed-files-specific - uses: tj-actions/changed-files@v44 - with: - files_ignore: | - release-notes/** - .github/** - **.md - - run: echo "Value is :${{steps.changed-files-specific.outputs.any_changed}}" gradle-check: - needs: check-files - if: github.repository == 'gaiksaya/OpenSearch' && needs.check-files.outputs.RUN_GRADLE_CHECK == 'true' + if: github.repository == 'gaiksaya/OpenSearch' permissions: contents: read # to fetch code (actions/checkout) pull-requests: write # to create or update comment (peter-evans/create-or-update-comment) @@ -43,105 +26,114 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - run: echo ${{github.repository}} ${{needs.check-files.outputs.RUN_GRADLE_CHECK}} - - # - name: Setup environment variables (PR) - # if: github.event_name == 'pull_request_target' - # run: | - # echo "pr_from_sha=$(jq --raw-output .pull_request.head.sha $GITHUB_EVENT_PATH)" >> $GITHUB_ENV - # echo "pr_from_clone_url=$(jq --raw-output .pull_request.head.repo.clone_url $GITHUB_EVENT_PATH)" >> $GITHUB_ENV - # echo "pr_to_clone_url=$(jq --raw-output .pull_request.base.repo.clone_url $GITHUB_EVENT_PATH)" >> $GITHUB_ENV - # echo "pr_title=$(jq --raw-output .pull_request.title $GITHUB_EVENT_PATH)" >> $GITHUB_ENV - # echo "pr_number=$(jq --raw-output .pull_request.number $GITHUB_EVENT_PATH)" >> $GITHUB_ENV - - # - name: Setup environment variables (Push) - # if: github.event_name == 'push' - # run: | - # repo_url="https://github.com/opensearch-project/OpenSearch" - # ref_id=$(git rev-parse HEAD) - # branch_name=$(git rev-parse --abbrev-ref HEAD) - # echo "branch_name=$branch_name" >> $GITHUB_ENV - # echo "pr_from_sha=$ref_id" >> $GITHUB_ENV - # echo "pr_from_clone_url=$repo_url" >> $GITHUB_ENV - # echo "pr_to_clone_url=$repo_url" >> $GITHUB_ENV - # echo "pr_title=Push trigger $branch_name $ref_id $repo_url" >> $GITHUB_ENV - # echo "pr_number=Null" >> $GITHUB_ENV - - # - name: Checkout opensearch-build repo - # uses: actions/checkout@v4 - # with: - # repository: opensearch-project/opensearch-build - # ref: main - # path: opensearch-build - - # - name: Trigger jenkins workflow to run gradle check - # run: | - # set -e - # set -o pipefail - # bash opensearch-build/scripts/gradle/gradle-check.sh ${{ secrets.JENKINS_GRADLE_CHECK_GENERIC_WEBHOOK_TOKEN }} | tee -a gradle-check.log - - # - name: Setup Result Status - # if: always() - # run: | - # WORKFLOW_URL=`cat gradle-check.log | grep 'WORKFLOW_URL' | awk '{print $2}'` - # RESULT=`cat gradle-check.log | grep 'Result:' | awk '{print $2}'` - # echo "workflow_url=$WORKFLOW_URL" >> $GITHUB_ENV - # echo "result=$RESULT" >> $GITHUB_ENV - - # - name: Upload Coverage Report - # if: success() - # uses: codecov/codecov-action@v4 - # with: - # files: ./codeCoverage.xml - - # - name: Create Comment Success - # if: ${{ github.event_name == 'pull_request_target' && success() && env.result == 'SUCCESS' }} - # uses: peter-evans/create-or-update-comment@v4 - # with: - # issue-number: ${{ env.pr_number }} - # body: | - # :white_check_mark: Gradle check result for ${{ env.pr_from_sha }}: [${{ env.result }}](${{ env.workflow_url }}) - - # - name: Extract Test Failure - # if: ${{ github.event_name == 'pull_request_target' && env.result != 'SUCCESS' }} - # run: | - # TEST_FAILURES=`curl -s "${{ env.workflow_url }}/testReport/api/json?tree=suites\[cases\[status,className,name\]\]" | jq -r '.. | objects | select(.status=="FAILED",.status=="REGRESSION") | (.className + "." + .name)' | uniq -c | sort -n -r | head -n 10` - # if [[ "$TEST_FAILURES" != "" ]] - # then - # echo "test_failures<> $GITHUB_ENV - # echo "" >> $GITHUB_ENV - # echo "* **TEST FAILURES:**" >> $GITHUB_ENV - # echo '```' >> $GITHUB_ENV - # echo "$TEST_FAILURES" >> $GITHUB_ENV - # echo '```' >> $GITHUB_ENV - # echo "EOF" >> $GITHUB_ENV - # fi - - # - name: Create Comment Flaky - # if: ${{ github.event_name == 'pull_request_target' && success() && env.result != 'SUCCESS' }} - # uses: peter-evans/create-or-update-comment@v4 - # with: - # issue-number: ${{ env.pr_number }} - # body: | - # :grey_exclamation: Gradle check result for ${{ env.pr_from_sha }}: [${{ env.result }}](${{ env.workflow_url }}) ${{ env.test_failures }} - - # Please review all [flaky tests](https://github.com/opensearch-project/OpenSearch/blob/main/DEVELOPER_GUIDE.md#flaky-tests) that succeeded after retry and create an issue if one does not already exist to track the flaky failure. - - # - name: Create Comment Failure - # if: ${{ github.event_name == 'pull_request_target' && failure() }} - # uses: peter-evans/create-or-update-comment@v4 - # with: - # issue-number: ${{ env.pr_number }} - # body: | - # :x: Gradle check result for ${{ env.pr_from_sha }}: [${{ env.result }}](${{ env.workflow_url }}) - - # Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure [a flaky test](https://github.com/opensearch-project/OpenSearch/blob/main/DEVELOPER_GUIDE.md#flaky-tests) unrelated to your change? - - # - name: Create Issue On Push Failure - # if: ${{ github.event_name == 'push' && failure() }} - # uses: dblock/create-a-github-issue@v3 - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # with: - # assignees: ${{ github.event.head_commit.author.username }}, ${{ github.triggering_actor }} - # filename: .github/ISSUE_TEMPLATE/failed_check.md + - name: Get changed files in the docs folder + id: changed-files-specific + uses: tj-actions/changed-files@v44 + with: + files_ignore: | + release-notes/** + .github/** + **.md + + - name: Setup environment variables (PR) + if: github.event_name == 'pull_request_target' && steps.changed-files-specific.outputs.any_changed == 'true' + run: | + echo "pr_from_sha=$(jq --raw-output .pull_request.head.sha $GITHUB_EVENT_PATH)" >> $GITHUB_ENV + echo "pr_from_clone_url=$(jq --raw-output .pull_request.head.repo.clone_url $GITHUB_EVENT_PATH)" >> $GITHUB_ENV + echo "pr_to_clone_url=$(jq --raw-output .pull_request.base.repo.clone_url $GITHUB_EVENT_PATH)" >> $GITHUB_ENV + echo "pr_title=$(jq --raw-output .pull_request.title $GITHUB_EVENT_PATH)" >> $GITHUB_ENV + echo "pr_number=$(jq --raw-output .pull_request.number $GITHUB_EVENT_PATH)" >> $GITHUB_ENV + + - name: Setup environment variables (Push) + if: github.event_name == 'push' && steps.changed-files-specific.outputs.any_changed == 'true' + run: | + repo_url="https://github.com/opensearch-project/OpenSearch" + ref_id=$(git rev-parse HEAD) + branch_name=$(git rev-parse --abbrev-ref HEAD) + echo "branch_name=$branch_name" >> $GITHUB_ENV + echo "pr_from_sha=$ref_id" >> $GITHUB_ENV + echo "pr_from_clone_url=$repo_url" >> $GITHUB_ENV + echo "pr_to_clone_url=$repo_url" >> $GITHUB_ENV + echo "pr_title=Push trigger $branch_name $ref_id $repo_url" >> $GITHUB_ENV + echo "pr_number=Null" >> $GITHUB_ENV + + - name: Checkout opensearch-build repo + if: steps.changed-files-specific.outputs.any_changed == 'true' + uses: actions/checkout@v4 + with: + repository: opensearch-project/opensearch-build + ref: main + path: opensearch-build + + - name: Trigger jenkins workflow to run gradle check + if: steps.changed-files-specific.outputs.any_changed == 'true' + run: | + set -e + set -o pipefail + bash opensearch-build/scripts/gradle/gradle-check.sh ${{ secrets.JENKINS_GRADLE_CHECK_GENERIC_WEBHOOK_TOKEN }} | tee -a gradle-check.log + + - name: Setup Result Status + if: always() && steps.changed-files-specific.outputs.any_changed == 'true' + run: | + WORKFLOW_URL=`cat gradle-check.log | grep 'WORKFLOW_URL' | awk '{print $2}'` + RESULT=`cat gradle-check.log | grep 'Result:' | awk '{print $2}'` + echo "workflow_url=$WORKFLOW_URL" >> $GITHUB_ENV + echo "result=$RESULT" >> $GITHUB_ENV + + - name: Upload Coverage Report + if: success() && steps.changed-files-specific.outputs.any_changed == 'true' + uses: codecov/codecov-action@v4 + with: + files: ./codeCoverage.xml + + - name: Create Comment Success + if: ${{ github.event_name == 'pull_request_target' && success() && env.result == 'SUCCESS' }} && steps.changed-files-specific.outputs.any_changed == 'true' + uses: peter-evans/create-or-update-comment@v4 + with: + issue-number: ${{ env.pr_number }} + body: | + :white_check_mark: Gradle check result for ${{ env.pr_from_sha }}: [${{ env.result }}](${{ env.workflow_url }}) + + - name: Extract Test Failure + if: ${{ github.event_name == 'pull_request_target' && env.result != 'SUCCESS' }} && steps.changed-files-specific.outputs.any_changed == 'true' + run: | + TEST_FAILURES=`curl -s "${{ env.workflow_url }}/testReport/api/json?tree=suites\[cases\[status,className,name\]\]" | jq -r '.. | objects | select(.status=="FAILED",.status=="REGRESSION") | (.className + "." + .name)' | uniq -c | sort -n -r | head -n 10` + if [[ "$TEST_FAILURES" != "" ]] + then + echo "test_failures<> $GITHUB_ENV + echo "" >> $GITHUB_ENV + echo "* **TEST FAILURES:**" >> $GITHUB_ENV + echo '```' >> $GITHUB_ENV + echo "$TEST_FAILURES" >> $GITHUB_ENV + echo '```' >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + fi + + - name: Create Comment Flaky + if: ${{ github.event_name == 'pull_request_target' && success() && env.result != 'SUCCESS' }} && steps.changed-files-specific.outputs.any_changed == 'true' + uses: peter-evans/create-or-update-comment@v4 + with: + issue-number: ${{ env.pr_number }} + body: | + :grey_exclamation: Gradle check result for ${{ env.pr_from_sha }}: [${{ env.result }}](${{ env.workflow_url }}) ${{ env.test_failures }} + + Please review all [flaky tests](https://github.com/opensearch-project/OpenSearch/blob/main/DEVELOPER_GUIDE.md#flaky-tests) that succeeded after retry and create an issue if one does not already exist to track the flaky failure. + + - name: Create Comment Failure + if: ${{ github.event_name == 'pull_request_target' && failure() }} && steps.changed-files-specific.outputs.any_changed == 'true' + uses: peter-evans/create-or-update-comment@v4 + with: + issue-number: ${{ env.pr_number }} + body: | + :x: Gradle check result for ${{ env.pr_from_sha }}: [${{ env.result }}](${{ env.workflow_url }}) + + Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure [a flaky test](https://github.com/opensearch-project/OpenSearch/blob/main/DEVELOPER_GUIDE.md#flaky-tests) unrelated to your change? + + - name: Create Issue On Push Failure + if: ${{ github.event_name == 'push' && failure() }} && steps.changed-files-specific.outputs.any_changed == 'true' + uses: dblock/create-a-github-issue@v3 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + assignees: ${{ github.event.head_commit.author.username }}, ${{ github.triggering_actor }} + filename: .github/ISSUE_TEMPLATE/failed_check.md