From f65a79bd5b263a8e351423ff6fa24959ce9a6e73 Mon Sep 17 00:00:00 2001 From: Sayali Gaikawad Date: Wed, 1 May 2024 15:37:44 -0700 Subject: [PATCH 1/6] Check changed files before running gradle check Signed-off-by: Sayali Gaikawad --- .github/workflows/gradle-check.yml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index f610ff5c31049..4bf5a83aff706 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -12,8 +12,25 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: - gradle-check: + check-files: if: github.repository == 'opensearch-project/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 + + gradle-check: + needs: check-files + if: github.repository == 'opensearch-project/OpenSearch' && needs.check-files.outputs.RUN_GRADLE_CHECK permissions: contents: read # to fetch code (actions/checkout) pull-requests: write # to create or update comment (peter-evans/create-or-update-comment) From 41fd294572f0250c70208af4501b31df50f98412 Mon Sep 17 00:00:00 2001 From: Sayali Gaikawad Date: Wed, 1 May 2024 17:46:06 -0700 Subject: [PATCH 2/6] Convert to steps Signed-off-by: Sayali Gaikawad --- .github/workflows/gradle-check.yml | 48 +++++++++++++----------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index 4bf5a83aff706..051ddba53c5bf 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -12,30 +12,13 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: - check-files: - if: github.repository == 'opensearch-project/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 gradle-check: - needs: check-files - if: github.repository == 'opensearch-project/OpenSearch' && needs.check-files.outputs.RUN_GRADLE_CHECK + if: github.repository == 'opensearch-project/OpenSearch' permissions: contents: read # to fetch code (actions/checkout) pull-requests: write # to create or update comment (peter-evans/create-or-update-comment) issues: write # To create an issue if check fails on push. - runs-on: ubuntu-latest timeout-minutes: 130 steps: @@ -44,8 +27,17 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} + - name: Get changed files + 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' + if: github.event_name == 'pull_request_target' && steps.changed-files-specific.outputs.any_changed == 'true' run: | echo "event_name=pull_request_target" >> $GITHUB_ENV echo "branch_name=$(jq --raw-output .pull_request.base.ref $GITHUB_EVENT_PATH)" >> $GITHUB_ENV @@ -74,7 +66,7 @@ jobs: ).data[0]; - name: Setup environment variables (Push) - if: github.event_name == '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) @@ -91,6 +83,7 @@ jobs: echo "post_merge_action=true" >> $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 @@ -98,13 +91,14 @@ jobs: 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() + 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}'` @@ -112,13 +106,13 @@ jobs: echo "result=$RESULT" >> $GITHUB_ENV - name: Upload Coverage Report - if: success() + 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' }} + 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 }} @@ -126,7 +120,7 @@ jobs: :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' }} + 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" != "" ]] @@ -141,7 +135,7 @@ jobs: fi - name: Create Comment Flaky - if: ${{ github.event_name == 'pull_request_target' && success() && env.result != '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 }} @@ -151,7 +145,7 @@ jobs: 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() }} + 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 }} @@ -161,7 +155,7 @@ jobs: 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() }} + 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 }} From 40852ceb6d4a5df4e7551f6f71db32cb67ca667a Mon Sep 17 00:00:00 2001 From: Sayali Gaikawad Date: Thu, 2 May 2024 10:13:10 -0700 Subject: [PATCH 3/6] Refactor files list Signed-off-by: Sayali Gaikawad --- .github/workflows/gradle-check.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index 051ddba53c5bf..a569dd4a0a7ad 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -32,9 +32,20 @@ jobs: uses: tj-actions/changed-files@v44 with: files_ignore: | - release-notes/** + release-notes/*.md .github/** - **.md + ADMINS.md + CHANGELOG-3.0.md + CHANGELOG.md + CODE_OF_CONDUCT.md + CONTRIBUTING.md + DEVELOPER_GUIDE.md + MAINTAINERS.md + README.md + RELEASING.md + SECURITY.md + TESTING.md + TRIAGING.md - name: Setup environment variables (PR) if: github.event_name == 'pull_request_target' && steps.changed-files-specific.outputs.any_changed == 'true' From b932017da28e3640ed35ebd9765d83dd2f115b29 Mon Sep 17 00:00:00 2001 From: Sayali Gaikawad Date: Thu, 2 May 2024 10:16:47 -0700 Subject: [PATCH 4/6] refactor Signed-off-by: Sayali Gaikawad --- .github/workflows/gradle-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index a569dd4a0a7ad..a4a98b60102a8 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -131,7 +131,7 @@ jobs: :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' + 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" != "" ]] From 0dfc032a64830098f19035e19fa344a0a9ba82b3 Mon Sep 17 00:00:00 2001 From: Sayali Gaikawad Date: Fri, 24 May 2024 00:17:50 -0700 Subject: [PATCH 5/6] Refactor Signed-off-by: Sayali Gaikawad --- .github/workflows/gradle-check.yml | 46 ++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index a4a98b60102a8..0af6d86b573d1 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -12,9 +12,24 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: + check-files: + runs-on: ubuntu-latest + outputs: + RUN_GRADLE_CHECK: ${{ steps.changed-files-specific.outputs.any_changed }} + steps: + - uses: actions/checkout@v3 + - name: Get changed files + id: changed-files-specific + uses: tj-actions/changed-files@v44 + with: + files_ignore: | + release-notes/*.md + .github/** + *.md gradle-check: - if: github.repository == 'opensearch-project/OpenSearch' + needs: check-files + if: github.repository == 'opensearch-project/OpenSearch' && needs.check-files.outputs.RUN_GRADLE_CHECK == 'true' permissions: contents: read # to fetch code (actions/checkout) pull-requests: write # to create or update comment (peter-evans/create-or-update-comment) @@ -48,7 +63,7 @@ jobs: TRIAGING.md - name: Setup environment variables (PR) - if: github.event_name == 'pull_request_target' && steps.changed-files-specific.outputs.any_changed == 'true' + if: github.event_name == 'pull_request_target' run: | echo "event_name=pull_request_target" >> $GITHUB_ENV echo "branch_name=$(jq --raw-output .pull_request.base.ref $GITHUB_EVENT_PATH)" >> $GITHUB_ENV @@ -77,7 +92,7 @@ jobs: ).data[0]; - name: Setup environment variables (Push) - if: github.event_name == 'push' && steps.changed-files-specific.outputs.any_changed == 'true' + if: github.event_name == 'push' run: | repo_url="https://github.com/opensearch-project/OpenSearch" ref_id=$(git rev-parse HEAD) @@ -94,7 +109,6 @@ jobs: echo "post_merge_action=true" >> $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 @@ -102,14 +116,13 @@ jobs: 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' + 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}'` @@ -117,13 +130,13 @@ jobs: echo "result=$RESULT" >> $GITHUB_ENV - name: Upload Coverage Report - if: success() && steps.changed-files-specific.outputs.any_changed == 'true' + 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' && steps.changed-files-specific.outputs.any_changed == 'true' }} + 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 }} @@ -131,7 +144,7 @@ jobs: :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' }} + 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" != "" ]] @@ -146,7 +159,7 @@ jobs: fi - name: Create Comment Flaky - if: ${{ github.event_name == 'pull_request_target' && success() && env.result != 'SUCCESS' && steps.changed-files-specific.outputs.any_changed == 'true' }} + 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 }} @@ -156,7 +169,7 @@ jobs: 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' }} + if: ${{ github.event_name == 'pull_request_target' && failure() }} uses: peter-evans/create-or-update-comment@v4 with: issue-number: ${{ env.pr_number }} @@ -166,10 +179,19 @@ jobs: 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' }} + 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 + + check-result: + needs: [check-files, gradle-check] + if: always() + runs-on: ubuntu-latest + steps: + - name: Fail if gradle-check fails + if: ${{ needs.check-files.outputs.RUN_GRADLE_CHECK && needs.gradle-check.result == 'failure' }} + run: exit 1 \ No newline at end of file From 0de7d2163f9d71baf556c033a549e7ab396cefb9 Mon Sep 17 00:00:00 2001 From: Sayali Gaikawad Date: Fri, 24 May 2024 00:19:20 -0700 Subject: [PATCH 6/6] refactor Signed-off-by: Sayali Gaikawad --- .github/workflows/gradle-check.yml | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index 0af6d86b573d1..0ba4dbe374fdd 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -42,26 +42,6 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - name: Get changed files - id: changed-files-specific - uses: tj-actions/changed-files@v44 - with: - files_ignore: | - release-notes/*.md - .github/** - ADMINS.md - CHANGELOG-3.0.md - CHANGELOG.md - CODE_OF_CONDUCT.md - CONTRIBUTING.md - DEVELOPER_GUIDE.md - MAINTAINERS.md - README.md - RELEASING.md - SECURITY.md - TESTING.md - TRIAGING.md - - name: Setup environment variables (PR) if: github.event_name == 'pull_request_target' run: |