From 138867eff72c589d2a2ae6b594f3acb116f07a13 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 29 Jun 2022 18:29:10 +0000 Subject: [PATCH 1/5] Change codecov xml name and move gradle check script to build repo Signed-off-by: Peter Zhu --- jenkins/gradle/gradle-check.jenkinsfile | 6 ++- scripts/gradle/gradle-check.sh | 68 +++++++++++++++++++++++++ vars/runGradleCheck.groovy | 1 + 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 scripts/gradle/gradle-check.sh diff --git a/jenkins/gradle/gradle-check.jenkinsfile b/jenkins/gradle/gradle-check.jenkinsfile index 598066ec5d..13addcb479 100644 --- a/jenkins/gradle/gradle-check.jenkinsfile +++ b/jenkins/gradle/gradle-check.jenkinsfile @@ -44,7 +44,8 @@ pipeline { [key: 'pr_title', value: '$.pr_title'], [key: 'pr_number', value: '$.pr_number'] ], - tokenCredentialId: 'jenkins-gradle-check-generic-webhook-token', + token: 'peterzhuamazon-gradle-check', + //tokenCredentialId: 'jenkins-gradle-check-generic-webhook-token', causeString: 'Triggered by PR on OpenSearch core repository', printContributedVariables: false, printPostContent: false @@ -113,7 +114,8 @@ pipeline { } post() { always { - archiveArtifacts artifacts: 'search/build/reports/jacoco/**/*.xml', onlyIfSuccessful: true + sh ("mv -v `find search/build/reports/jacoco/ -name '*.xml' | head -n 1` codeCoverage.xml || echo") + archiveArtifacts artifacts: 'codeCoverage.xml', onlyIfSuccessful: true script { sh("rm -rf *") postCleanup() diff --git a/scripts/gradle/gradle-check.sh b/scripts/gradle/gradle-check.sh new file mode 100644 index 0000000000..b0df4321f3 --- /dev/null +++ b/scripts/gradle/gradle-check.sh @@ -0,0 +1,68 @@ +#!/bin/bash + + +# SPDX-License-Identifier: Apache-2.0 +# +# The OpenSearch Contributors require contributions made to +# this file be licensed under the Apache-2.0 license or a +# compatible open source license. + +# This script is used in OpenSearch Core repo github actions +# To trigger Jenkins Gradle Check from a PR + + +JENKINS_URL="https://build.ci.opensearch.org" +TIMEPASS=0 +TIMEOUT=7200 +RESULT="null" +TRIGGER_TOKEN=$1 +PAYLOAD_JSON="{\"pr_from_sha\": \"$pr_from_sha\", \"pr_from_clone_url\": \"$pr_from_clone_url\", \"pr_to_clone_url\": \"$pr_to_clone_url\", \"pr_title\": \"$pr_title\", \"pr_number\": \"$pr_number\"}" + +echo "Trigger Jenkins workflows" +JENKINS_REQ=`curl -s -XPOST \ + -H "Authorization: Bearer $TRIGGER_TOKEN" \ + -H "Content-Type: application/json" \ + "$JENKINS_URL/generic-webhook-trigger/invoke" \ + --data "$(echo $PAYLOAD_JSON)"` + +echo $PAYLOAD_JSON | jq +echo $JENKINS_REQ + +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 + + 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) + + fi +fi + +echo "Please check jenkins url for logs: $WORKFLOW_URL" + +if [ "$RESULT" != "SUCCESS" ]; then + echo "Result: $RESULT" + exit 1 +else + echo "Result: $RESULT" + echo 0 +fi diff --git a/vars/runGradleCheck.groovy b/vars/runGradleCheck.groovy index 34b7a88b9f..bc727def2c 100644 --- a/vars/runGradleCheck.groovy +++ b/vars/runGradleCheck.groovy @@ -16,6 +16,7 @@ void call(Map args = [:]) { usernamePassword(credentialsId: "jenkins-gradle-check-s3-aws-resources", usernameVariable: 'amazon_s3_base_path', passwordVariable: 'amazon_s3_bucket')]) { sh """ + #!/bin/bash set -e set +x From edd6edfc903f14d8ed5d35c5d6ff9d64f5984301 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 29 Jun 2022 20:57:35 +0000 Subject: [PATCH 2/5] Add tests Signed-off-by: Peter Zhu --- tests/jenkins/jobs/RunGradleCheck_Jenkinsfile.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/jenkins/jobs/RunGradleCheck_Jenkinsfile.txt b/tests/jenkins/jobs/RunGradleCheck_Jenkinsfile.txt index 4e25a6dd5d..a84cf40b88 100644 --- a/tests/jenkins/jobs/RunGradleCheck_Jenkinsfile.txt +++ b/tests/jenkins/jobs/RunGradleCheck_Jenkinsfile.txt @@ -10,6 +10,7 @@ runGradleCheck.usernamePassword({credentialsId=jenkins-gradle-check-s3-aws-resources, usernameVariable=amazon_s3_base_path, passwordVariable=amazon_s3_bucket}) runGradleCheck.withCredentials([[amazon_s3_access_key, amazon_s3_secret_key], [amazon_s3_base_path, amazon_s3_bucket]], groovy.lang.Closure) runGradleCheck.sh( + #!/bin/bash set -e set +x From c54c26fbfb306ef7576cd6f8b186e2d469a9b1f6 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 29 Jun 2022 21:00:03 +0000 Subject: [PATCH 3/5] Tweak tokens Signed-off-by: Peter Zhu --- jenkins/gradle/gradle-check.jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jenkins/gradle/gradle-check.jenkinsfile b/jenkins/gradle/gradle-check.jenkinsfile index 13addcb479..317ea19852 100644 --- a/jenkins/gradle/gradle-check.jenkinsfile +++ b/jenkins/gradle/gradle-check.jenkinsfile @@ -44,8 +44,7 @@ pipeline { [key: 'pr_title', value: '$.pr_title'], [key: 'pr_number', value: '$.pr_number'] ], - token: 'peterzhuamazon-gradle-check', - //tokenCredentialId: 'jenkins-gradle-check-generic-webhook-token', + tokenCredentialId: 'jenkins-gradle-check-generic-webhook-token', causeString: 'Triggered by PR on OpenSearch core repository', printContributedVariables: false, printPostContent: false From d40a3436ab24886811caac960103bb93651a910a Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 29 Jun 2022 21:01:14 +0000 Subject: [PATCH 4/5] Tweak jenkins codeCoverage.xml Signed-off-by: Peter Zhu --- jenkins/gradle/gradle-check.jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/gradle/gradle-check.jenkinsfile b/jenkins/gradle/gradle-check.jenkinsfile index 317ea19852..563d269fd3 100644 --- a/jenkins/gradle/gradle-check.jenkinsfile +++ b/jenkins/gradle/gradle-check.jenkinsfile @@ -113,7 +113,7 @@ pipeline { } post() { always { - sh ("mv -v `find search/build/reports/jacoco/ -name '*.xml' | head -n 1` codeCoverage.xml || echo") + sh ("cp -v `find search/build/reports/jacoco/ -name '*.xml' | head -n 1` codeCoverage.xml || echo") archiveArtifacts artifacts: 'codeCoverage.xml', onlyIfSuccessful: true script { sh("rm -rf *") From 8c4a7068fae096cbd0e5ede3a5626779d16029f6 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 29 Jun 2022 21:32:43 +0000 Subject: [PATCH 5/5] Add codeCoverage.xml Signed-off-by: Peter Zhu --- scripts/gradle/gradle-check.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/gradle/gradle-check.sh b/scripts/gradle/gradle-check.sh index b0df4321f3..2d0dc522c5 100644 --- a/scripts/gradle/gradle-check.sh +++ b/scripts/gradle/gradle-check.sh @@ -64,5 +64,6 @@ if [ "$RESULT" != "SUCCESS" ]; then exit 1 else echo "Result: $RESULT" + echo "Get codeCoverage.xml" && curl -SLO ${WORKFLOW_URL}artifact/codeCoverage.xml echo 0 fi