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 }}