From 20a04dbd24d01416ade33a1520d4acf80adf5f74 Mon Sep 17 00:00:00 2001 From: Jan Stastny Date: Tue, 19 Sep 2023 20:23:58 +0200 Subject: [PATCH] kie-issues#574 Initial ASF Jenkins CI Setup (#607) Co-authored-by: jstastny-cz --- .ci/environments/common/update_quarkus.sh | 2 +- .ci/jenkins/Jenkinsfile | 43 ++++++++++++++ .ci/jenkins/Jenkinsfile.setup-branch | 19 ++----- .ci/jenkins/dsl/jobs.groovy | 9 ++- .ci/jenkins/dsl/test.sh | 8 +-- .github/pull_request_template.md | 6 +- .github/workflows/full-downstream.yml | 4 +- .github/workflows/jenkins-tests-PR.yml | 6 +- .github/workflows/nightly.yml | 6 +- .github/workflows/pr-backporting.yml | 4 +- .github/workflows/pull_request.yml | 10 ++-- .github/workflows/quarkus-snapshot.yml | 2 +- .../rhbop_productized_pull_request.yml | 57 ------------------- 13 files changed, 77 insertions(+), 99 deletions(-) create mode 100644 .ci/jenkins/Jenkinsfile delete mode 100644 .github/workflows/rhbop_productized_pull_request.yml diff --git a/.ci/environments/common/update_quarkus.sh b/.ci/environments/common/update_quarkus.sh index 6ac5e81e5..2c2e70649 100755 --- a/.ci/environments/common/update_quarkus.sh +++ b/.ci/environments/common/update_quarkus.sh @@ -3,7 +3,7 @@ set -euo pipefail mvn_cmd="mvn ${BUILD_MVN_OPTS:-} ${BUILD_MVN_OPTS_QUARKUS_UPDATE:-}" -source <(curl -s https://raw.githubusercontent.com/kiegroup/kogito-pipelines/main/dsl/seed/scripts/install_quarkus.sh) +source <(curl -s https://raw.githubusercontent.com/apache/incubator-kie-kogito-pipelines/main/dsl/seed/scripts/install_quarkus.sh) echo "Update project with Quarkus version ${QUARKUS_VERSION}" diff --git a/.ci/jenkins/Jenkinsfile b/.ci/jenkins/Jenkinsfile new file mode 100644 index 000000000..a6fc2c85c --- /dev/null +++ b/.ci/jenkins/Jenkinsfile @@ -0,0 +1,43 @@ +@Library('jenkins-pipeline-shared-libraries')_ + +pr_check_script = null + +pipeline { + agent { + label 'ubuntu' + } + options { + timestamps() + timeout(time: 720, unit: 'MINUTES') + } + environment { + BUILDCHAIN_PROJECT = 'apache/incubator-kie-optaplanner-quickstarts' + BUILDCHAIN_CONFIG_REPO = 'apache/incubator-kie-optaplanner' + BUILDCHAIN_CONFIG_FILE_PATH = '.ci/buildchain-config.yaml' + + OPTAPLANNER_BUILD_MVN_OPTS_UPSTREAM = '-Dfull' + BUILD_MVN_OPTS_CURRENT = '-Dfull' + } + stages { + stage('Initialize') { + steps { + script { + // load `pr_check.groovy` file from kogito-pipelines:main + dir('kogito-pipelines') { + checkout(githubscm.resolveRepository('incubator-kie-kogito-pipelines', 'apache', 'main', false, 'kie-ci')) // TODO to change back to kiegroup:main + pr_check_script = load 'dsl/scripts/pr_check.groovy' + } + } + } + } + stage('PR check') { + steps { + script { + dir('kogito-pipelines') { + pr_check_script.launch() + } + } + } + } + } +} \ No newline at end of file diff --git a/.ci/jenkins/Jenkinsfile.setup-branch b/.ci/jenkins/Jenkinsfile.setup-branch index fd3596abe..160b20143 100644 --- a/.ci/jenkins/Jenkinsfile.setup-branch +++ b/.ci/jenkins/Jenkinsfile.setup-branch @@ -3,16 +3,18 @@ import org.jenkinsci.plugins.workflow.libs.Library import org.kie.jenkins.MavenCommand -optaplannerRepo = 'optaplanner' +optaplannerRepo = 'incubator-kie-optaplanner' pipeline { agent { - label 'kie-rhel8 && !built-in' + label 'ubuntu' } tools { - maven env.BUILD_MAVEN_TOOL - jdk env.BUILD_JDK_TOOL + docker { + image env.AGENT_DOCKER_BUILDER_IMAGE + args env.AGENT_DOCKER_BUILDER_ARGS + } } options { @@ -20,17 +22,8 @@ pipeline { timeout(time: 60, unit: 'MINUTES') } - // parameters { - // For parameters, check into ./dsl/jobs.groovy file - // } - environment { - // Static env is defined into ./dsl/jobs.groovy file - OPTAPLANNER_CI_EMAIL_TO = credentials("${JENKINS_EMAIL_CREDS_ID}") - - // Keep here for visitibility - MAVEN_OPTS = '-Xms1024m -Xmx4g' } stages { diff --git a/.ci/jenkins/dsl/jobs.groovy b/.ci/jenkins/dsl/jobs.groovy index 33f339d23..46cc6814f 100644 --- a/.ci/jenkins/dsl/jobs.groovy +++ b/.ci/jenkins/dsl/jobs.groovy @@ -2,10 +2,10 @@ * This file is describing all the Jenkins jobs in the DSL format (see https://plugins.jenkins.io/job-dsl/) * needed by the Kogito pipelines. * -* The main part of Jenkins job generation is defined into the https://github.com/kiegroup/kogito-pipelines repository. +* The main part of Jenkins job generation is defined into the https://github.com/apache/incubator-kie-kogito-pipelines repository. * * This file is making use of shared libraries defined in -* https://github.com/kiegroup/kogito-pipelines/tree/main/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl. +* https://github.com/apache/incubator-kie-kogito-pipelines/tree/main/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl. */ import org.kie.jenkins.jobdsl.model.JobType @@ -34,7 +34,7 @@ Map getMultijobPRConfig() { } // Optaplanner PR checks -KogitoJobUtils.createAllEnvironmentsPerRepoPRJobs(this) { jobFolder -> getMultijobPRConfig() } +Utils.isMainBranch(this) && KogitoJobTemplate.createPullRequestMultibranchPipelineJob(this, "${jenkins_path}/Jenkinsfile") // Init branch createSetupBranchJob() @@ -61,9 +61,8 @@ void setupSpecificBuildChainNightlyJob(String envName) { void createSetupBranchJob() { def jobParams = JobParamsUtils.getBasicJobParams(this, 'optaplanner-quickstarts', JobType.SETUP_BRANCH, "${jenkins_path}/Jenkinsfile.setup-branch", 'OptaPlanner Quickstarts Setup Branch') - JobParamsUtils.setupJobParamsDefaultMavenConfiguration(this, jobParams) + JobParamsUtils.setupJobParamsAgentDockerBuilderImageConfiguration(this, jobParams) jobParams.env.putAll([ - REPO_NAME: 'optaplanner-quickstarts', JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}", GIT_AUTHOR: "${GIT_AUTHOR_NAME}", diff --git a/.ci/jenkins/dsl/test.sh b/.ci/jenkins/dsl/test.sh index 1dd3b10fe..5449b2638 100755 --- a/.ci/jenkins/dsl/test.sh +++ b/.ci/jenkins/dsl/test.sh @@ -22,13 +22,13 @@ fi git_author="$(echo ${git_url} | awk -F"${git_server_url}" '{print $2}' | awk -F. '{print $1}' | awk -F/ '{print $1}')" -export DSL_DEFAULT_MAIN_CONFIG_FILE_REPO="${git_author}"/optaplanner -export DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REPO=kiegroup/optaplanner +export DSL_DEFAULT_MAIN_CONFIG_FILE_REPO="${git_author}"/incubator-kie-optaplanner +export DSL_DEFAULT_FALLBACK_MAIN_CONFIG_FILE_REPO=apache/incubator-kie-optaplanner export DSL_DEFAULT_MAIN_CONFIG_FILE_PATH=.ci/jenkins/config/main.yaml -export DSL_DEFAULT_BRANCH_CONFIG_FILE_REPO="${git_author}"/optaplanner +export DSL_DEFAULT_BRANCH_CONFIG_FILE_REPO="${git_author}"/incubator-kie-optaplanner file=$(mktemp) # For more usage of the script, use ./test.sh -h -curl -o ${file} https://raw.githubusercontent.com/kiegroup/kogito-pipelines/main/dsl/seed/scripts/seed_test.sh +curl -o ${file} https://raw.githubusercontent.com/apache/incubator-kie-kogito-pipelines/main/dsl/seed/scripts/seed_test.sh chmod u+x ${file} ${file} $@ \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index b4097a1c5..1a728734f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -19,11 +19,11 @@ and also the external https://github.com/quarkusio/quarkus-quickstarts/tree/main ### Referenced pull requests +changes that span multiple KIE repositories and depend on each other. --> diff --git a/.github/workflows/full-downstream.yml b/.github/workflows/full-downstream.yml index 233d49f9a..d74e9dd9f 100644 --- a/.github/workflows/full-downstream.yml +++ b/.github/workflows/full-downstream.yml @@ -52,9 +52,9 @@ jobs: restore-keys: ${{ runner.os }}-${{ matrix.java-version }}-m2 - name: Build Chain ${{ matrix.java-version }} id: build-chain - uses: kiegroup/github-action-build-chain@v3.1.10 + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/github-action-build-chain@v3.1.10 with: - definition-file: https://raw.githubusercontent.com/${GROUP}/optaplanner/main/.ci/buildchain-config.yaml + definition-file: https://raw.githubusercontent.com/${GROUP}/incubator-kie-optaplanner/main/.ci/buildchain-config.yaml env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" OPTAPLANNER_BUILD_MVN_OPTS_UPSTREAM: "-Dfull" diff --git a/.github/workflows/jenkins-tests-PR.yml b/.github/workflows/jenkins-tests-PR.yml index f59785f19..5e11cb912 100644 --- a/.github/workflows/jenkins-tests-PR.yml +++ b/.github/workflows/jenkins-tests-PR.yml @@ -22,10 +22,10 @@ jobs: fi echo "BASE_BRANCH=${branch}" >> $GITHUB_ENV - name: DSL tests - uses: kiegroup/kogito-pipelines/.ci/actions/dsl-tests@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/dsl-tests@main with: project: optaplanner - main-config-file-repo: kiegroup/optaplanner + main-config-file-repo: apache/incubator-kie-optaplanner main-config-file-path: .ci/jenkins/config/main.yaml - branch-config-file-repo: kiegroup/optaplanner + branch-config-file-repo: apache/incubator-kie-optaplanner base-branch: ${{ env.BASE_BRANCH }} \ No newline at end of file diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 2c87c7af8..b4dd7a420 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -8,7 +8,7 @@ on: jobs: nightly: - if: github.repository == 'kiegroup/optaplanner-quickstarts' + if: github.repository == 'apache/incubator-kie-optaplanner-quickstarts' concurrency: group: nightly cancel-in-progress: true @@ -22,9 +22,9 @@ jobs: steps: - name: Support long paths if: ${{ matrix.os == 'windows-latest' }} - uses: kiegroup/kogito-pipelines/.ci/actions/long-paths@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/long-paths@main - name: Java and Maven Setup - uses: kiegroup/kogito-pipelines/.ci/actions/maven@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/maven@main with: java-version: ${{ matrix.java-version }} maven-version: ${{ matrix.maven-version }} diff --git a/.github/workflows/pr-backporting.yml b/.github/workflows/pr-backporting.yml index d1eb53041..5a763c70d 100644 --- a/.github/workflows/pr-backporting.yml +++ b/.github/workflows/pr-backporting.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Set target branches id: set-targets - uses: kiegroup/kogito-pipelines/.ci/actions/parse-labels@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/parse-labels@main with: labels: ${LABELS} @@ -34,7 +34,7 @@ jobs: REVIEWERS: ${{ toJSON(github.event.pull_request.requested_reviewers) }} steps: - name: Backporting - uses: kiegroup/kogito-pipelines/.ci/actions/backporting@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/backporting@main with: target-branch: ${{ matrix.target-branch }} additional-reviewers: ${REVIEWERS} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index d38f5cac6..c9e165142 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -30,19 +30,19 @@ jobs: steps: - name: Support long paths if: ${{ matrix.os == 'windows-latest' }} - uses: kiegroup/kogito-pipelines/.ci/actions/long-paths@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/long-paths@main - name: Java and Maven Setup - uses: kiegroup/kogito-pipelines/.ci/actions/maven@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/maven@main with: java-version: ${{ matrix.java-version }} maven-version: ${{ matrix.maven-version }} cache-key-prefix: ${{ runner.os }}-${{ matrix.java-version }}-maven${{ matrix.maven-version }} - name: Build Chain - uses: kiegroup/kogito-pipelines/.ci/actions/build-chain@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/build-chain@main with: - definition-file: https://raw.githubusercontent.com/${GROUP:kiegroup}/optaplanner/${BRANCH:main}/.ci/buildchain-config.yaml + definition-file: https://raw.githubusercontent.com/${GROUP:apache}/incubator-kie-optaplanner/${BRANCH:main}/.ci/buildchain-config.yaml annotations-prefix: ${{ runner.os }}-${{ matrix.java-version }}/${{ matrix.maven-version }} github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Surefire Report - uses: kiegroup/kogito-pipelines/.ci/actions/surefire-report@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/surefire-report@main if: ${{ always() }} diff --git a/.github/workflows/quarkus-snapshot.yml b/.github/workflows/quarkus-snapshot.yml index 65c8f279f..6278e36e5 100644 --- a/.github/workflows/quarkus-snapshot.yml +++ b/.github/workflows/quarkus-snapshot.yml @@ -32,7 +32,7 @@ jobs: run: sudo add-apt-repository ppa:rmescandon/yq && sudo apt update && sudo apt install yq -y - name: Java and Maven Setup - uses: kiegroup/kogito-pipelines/.ci/actions/maven@main + uses: apache/incubator-kie-kogito-pipelines/.ci/actions/maven@main with: java-version: ${{ matrix.java-version }} maven-version: ${{ matrix.maven-version }} diff --git a/.github/workflows/rhbop_productized_pull_request.yml b/.github/workflows/rhbop_productized_pull_request.yml deleted file mode 100644 index bf47386d5..000000000 --- a/.github/workflows/rhbop_productized_pull_request.yml +++ /dev/null @@ -1,57 +0,0 @@ -# Tests RHBOP productized profile builds on PRs -name: Productized Build Chain - -on: - pull_request: - types: [opened, synchronize, reopened, labeled] - branches: - - main - - 8.* - paths-ignore: - - 'LICENSE*' - - '.gitignore' - - '.gitattributes' - - '**.md' - - '**.adoc' - - '*.txt' - - '.ci/jenkins/**' - -defaults: - run: - shell: bash - -jobs: - productized-build-chain: - concurrency: - group: rhbop_pull_request-${{ github.event_name }}-${{ github.head_ref }}-${{ matrix.os }}-${{ matrix.java-version }} - cancel-in-progress: true - timeout-minutes: 120 - strategy: - matrix: - os: [ubuntu-latest] - java-version: [11] - maven-version: ['3.8.7'] - fail-fast: false - runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} - Java ${{ matrix.java-version }} - Maven - steps: - - name: Clean Disk Space - uses: kiegroup/kogito-pipelines/.ci/actions/ubuntu-disk-space@main - - name: Java and Maven Setup - uses: kiegroup/kogito-pipelines/.ci/actions/maven@main - with: - java-version: ${{ matrix.java-version }} - maven-version: ${{ matrix.maven-version }} - cache-key-prefix: ${{ runner.os }}-${{ matrix.java-version }}-maven${{ matrix.maven-version }} - - name: Productized Build Chain - uses: kiegroup/kogito-pipelines/.ci/actions/build-chain@main - with: - definition-file: https://raw.githubusercontent.com/${GROUP:kiegroup}/optaplanner/${BRANCH:main}/.ci/pull-request-config-rhbop.yaml - annotations-prefix: ${{ runner.os }}-${{ matrix.java-version }}/${{ matrix.maven-version }} - github-token: "${{ secrets.GITHUB_TOKEN }}" - - name: Surefire Report - uses: kiegroup/kogito-pipelines/.ci/actions/surefire-report@main - if: ${{ always() }} - with: - report_paths: '**/*-reports/TEST-*.xml' -