From 1a808afff84ca5c4f6554f2df2c967b08c3abc77 Mon Sep 17 00:00:00 2001 From: "opensearch-trigger-bot[bot]" <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 17:30:49 -0700 Subject: [PATCH] Add gradle check test for github workflows (#3717) (#3722) Signed-off-by: Peter Zhu (cherry picked from commit 660cc11612ee8d9380f6944a212cfdd66a86d36a) Co-authored-by: Peter Zhu --- .github/workflows/code-hygiene.yml | 2 +- .github/workflows/gradle-check.yml | 71 ++++++++++++++++++++++++++++++ .github/workflows/wrapper.yml | 2 +- jenkins/jenkinsfile | 32 -------------- 4 files changed, 73 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/gradle-check.yml delete mode 100644 jenkins/jenkinsfile diff --git a/.github/workflows/code-hygiene.yml b/.github/workflows/code-hygiene.yml index 1952630e5bdfa..a1adbb8a87507 100644 --- a/.github/workflows/code-hygiene.yml +++ b/.github/workflows/code-hygiene.yml @@ -1,6 +1,6 @@ name: Code Hygiene -on: [push, pull_request] +on: [pull_request] jobs: linelint: diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml new file mode 100644 index 0000000000000..e31ddca219ed1 --- /dev/null +++ b/.github/workflows/gradle-check.yml @@ -0,0 +1,71 @@ +name: Jenkins Gradle Check +on: [pull_request] + +jobs: + gradle-check: + runs-on: ubuntu-latest + timeout-minutes: 130 + steps: + - name: Setup environment variables + 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: 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 + + 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/.github/workflows/wrapper.yml b/.github/workflows/wrapper.yml index be5e7afb56ba0..c3e0aae98cde2 100644 --- a/.github/workflows/wrapper.yml +++ b/.github/workflows/wrapper.yml @@ -1,5 +1,5 @@ name: Validate Gradle Wrapper -on: [push, pull_request] +on: [pull_request] jobs: validate: diff --git a/jenkins/jenkinsfile b/jenkins/jenkinsfile deleted file mode 100644 index 96973fceea765..0000000000000 --- a/jenkins/jenkinsfile +++ /dev/null @@ -1,32 +0,0 @@ -pipeline { - agent { - docker { - label 'AL2-X64' - /* See - https://hub.docker.com/layers/ci-runner/opensearchstaging/ci-runner/ci-runner-ubuntu1804-build-v1/images/sha256-2c7bb2780bc08cd4e7e3c382ac53db414754dabd52f9b70e1c7e344dfb9a0e5e?context=explore - for docker image - */ - image 'opensearchstaging/ci-runner:ci-runner-ubuntu1804-build-v1' - alwaysPull true - } - } - - environment { - JAVA11_HOME="/opt/java/openjdk-11" - JAVA14_HOME="/opt/java/openjdk-14" - JAVA17_HOME="/opt/java/openjdk-17" - JAVA8_HOME="/opt/java/openjdk-8" - JAVA_HOME="/opt/java/openjdk-17" - } - - stages { - stage('gradle-check') { - steps { - script { - sh 'echo gradle check' - sh './gradlew check --no-daemon --no-scan' - } - } - } - } -}