From 388c80ad94529b1d9aad0a735c4740dce2932a32 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Thu, 30 Jun 2022 12:56:06 -0700 Subject: [PATCH] Move gradle-check code to its own scripts and upload codecov (#3742) (#3747) * Move gradle-check to script, add codecov, add comments Signed-off-by: Peter Zhu * Add more improvements on comments handling Signed-off-by: Peter Zhu * Add more comments Signed-off-by: Peter Zhu (cherry picked from commit 3681ac712e639d6bc47d27f3849841a040e62193) Co-authored-by: Peter Zhu --- .github/workflows/gradle-check.yml | 90 ++++++++++++++---------------- 1 file changed, 41 insertions(+), 49 deletions(-) diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml index 5c3b4c5d7ff43..d53bda69ad8fe 100644 --- a/.github/workflows/gradle-check.yml +++ b/.github/workflows/gradle-check.yml @@ -16,58 +16,50 @@ jobs: 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: Checkout opensearch-build repo + uses: actions/checkout@v2 + with: + repository: opensearch-project/opensearch-build + ref: main + - name: Trigger jenkins workflow to run gradle check run: | - echo "${{ env.pr_to_clone_url }} PR: ${{ env.pr_number }}" - echo "Raise from ${{ env.pr_from_clone_url }} ${{ env.pr_from_sha }}" - echo "PR Title: ${{ env.pr_title }}" - JENKINS_URL="https://build.ci.opensearch.org" - TIMEPASS=0 - TIMEOUT=7200 - RESULT="null" - - echo "Trigger Jenkins workflows" - JENKINS_REQ=$(curl -s -XPOST \ - -H "Authorization: Bearer ${{ secrets.JENKINS_GRADLE_CHECK_GENERIC_WEBHOOK_TOKEN }}" \ - -H "Content-Type: application/json" \ - --data '{"pr_from_sha": "${{ env.pr_from_sha }}", "pr_from_clone_url": "${{ env.pr_from_clone_url }}", "pr_to_clone_url": "${{ env.pr_to_clone_url }}", "pr_title": "${{ env.pr_title }}", "pr_number": "${{ env.pr_number }}"}' \ - 'https://build.ci.opensearch.org/generic-webhook-trigger/invoke') - - QUEUE_URL=$(echo $JENKINS_REQ | jq --raw-output '.jobs."gradle-check".url') - echo QUEUE_URL $QUEUE_URL - echo "wait for jenkins to start workflow" && sleep 15 - - echo "Check if queue exist in Jenkins after triggering" - if [ -z "$QUEUE_URL" ] || [ "$QUEUE_URL" != "null" ]; then - WORKFLOW_URL=$(curl -s -XGET ${JENKINS_URL}/${QUEUE_URL}api/json | jq --raw-output .executable.url) - echo WORKFLOW_URL $WORKFLOW_URL + set -e + set -o pipefail + bash scripts/gradle/gradle-check.sh ${{ secrets.JENKINS_GRADLE_CHECK_GENERIC_WEBHOOK_TOKEN }} | tee -a gradle-check.log - echo "Use queue information to find build number in Jenkins if available" - if [ -z "$WORKFLOW_URL" ] || [ "$WORKFLOW_URL" != "null" ]; then - - RUNNING="true" - - echo "Waiting for Jenkins to complete the run" - while [ "$RUNNING" = "true" ] && [ "$TIMEPASS" -le "$TIMEOUT" ]; do - echo "Still running, wait for another 30 seconds before checking again, max timeout $TIMEOUT" - echo "Jenkins Workflow Url: $WORKFLOW_URL" - TIMEPASS=$(( TIMEPASS + 30 )) && echo time pass: $TIMEPASS - sleep 30 - RUNNING=$(curl -s -XGET ${WORKFLOW_URL}api/json | jq --raw-output .building) - done - - echo "Complete the run, checking results now......" - RESULT=$(curl -s -XGET ${WORKFLOW_URL}api/json | jq --raw-output .result) + - 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 - fi - fi + - name: Upload Coverage Report + if: success() + uses: codecov/codecov-action@v2 + with: + files: ./codeCoverage.xml - echo "Please check jenkins url for logs: $WORKFLOW_URL" + - name: Create Comment Success + if: success() + uses: peter-evans/create-or-update-comment@v2 + with: + issue-number: ${{ env.pr_number }} + body: | + ### Gradle Check (Jenkins) Run Completed with: + * **RESULT:** ${{ env.result }} :white_check_mark: + * **URL:** ${{ env.workflow_url }} + * **CommitID:** ${{ env.pr_from_sha }} - if [ "$RESULT" != "SUCCESS" ]; then - echo "Result: $RESULT" - exit 1 - else - echo "Result: $RESULT" - echo 0 - fi + - name: Create Comment Failure + if: failure() + uses: peter-evans/create-or-update-comment@v2 + with: + issue-number: ${{ env.pr_number }} + body: | + ### Gradle Check (Jenkins) Run Completed with: + * **RESULT:** ${{ env.result }} :x: + * **URL:** ${{ env.workflow_url }} + * **CommitID:** ${{ env.pr_from_sha }}