| #!/usr/bin/env groovy |
| |
| /******************************************************************************* |
| * Copyright (C) 2020 EGit Committers and others. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| *******************************************************************************/ |
| |
| /** |
| * EGit verify build for a given branch. |
| * |
| * @param lib |
| * library to use |
| * @param tooling |
| * to use |
| * @param cfg |
| * configuration |
| * @return |
| */ |
| def call(def lib, def tooling, Map cfg = [:]) { |
| Map config = [timeOut : 60, noTests : false, jdk : 'temurin-jdk17-latest', gpg : false] << cfg |
| // Check parameters |
| lib.configCheck(config, [ |
| timeOut : 'Job timeout in minutes, default 60', |
| repoPath : 'Full path to the repository to build, for instance "egit/egit".', |
| // defaultBranch is optional: branch to build if $GERRIT_BRANCH is not set |
| // optional: upstreamRepoPath : 'Path to the upstream repo, for instance the first "jgit" for "jgit/jgit".', |
| // optional: upstreamRepo : 'Upstream repository name, for instance the second "jgit" for "jgit/jgit".', |
| // upstreamVersion is optional; auto-determined if not set |
| p2project : 'Project containing the built update site at target/repository.', |
| ]) |
| uiNode(config.timeOut) { |
| try { |
| if (!env.GERRIT_BRANCH) { |
| env.GERRIT_BRANCH = config.defaultBranch |
| } |
| if (config.jdk) { |
| def jdk = tool name: "${config.jdk}", type: 'jdk' |
| env.JAVA_HOME = "${jdk}" |
| } |
| stage('Checkout') { |
| sh '$JAVA_HOME/bin/java -version' |
| tooling.cloneAndCheckout(config.repoPath, env.GERRIT_BRANCH, '$GERRIT_REFSPEC', [ |
| extensions: [ |
| [$class: 'BuildChooserSetting', |
| buildChooser: [$class: 'GerritTriggerBuildChooser'] |
| ] |
| ] |
| ]) |
| } |
| stage('Initialize PGP') { |
| if (config.gpg) { |
| withCredentials([ |
| file(credentialsId: 'secret-subkeys.asc', variable: 'KEYRING') |
| ]) { |
| sh ''' |
| gpg --batch --import "${KEYRING}" |
| for fpr in $(gpg --list-keys --with-colons \ |
| | awk -F: \'/fpr:/ {print $10}\' \ |
| | sort -u); do echo -e "5\ny\n" \ |
| | gpg --batch --command-fd 0 --expert --edit-key ${fpr} trust; \ |
| done |
| ''' |
| } |
| } else { |
| echo "No GPG setup" |
| } |
| } |
| stage('Build') { |
| def profiles = config.noTests ? '' : 'static-checks,' |
| profiles += 'other-os,eclipse-sign' |
| def arguments = [ |
| 'clean', |
| 'install', |
| '-P' + profiles |
| ] |
| def upstreamRepo = config.upstreamRepo; |
| if (!!upstreamRepo) { |
| def ownVersion = lib.getOwnVersion('pom.xml') |
| def upstreamVersion = config.upstreamVersion |
| if (!upstreamVersion) { |
| upstreamVersion = lib.getUpstreamVersion(config.upstreamRepoPath, upstreamRepo, ownVersion) |
| } |
| arguments.add(lib.getMvnUpstreamRepo(upstreamRepo, upstreamVersion)) |
| } |
| if (config.noTests) { |
| arguments.add('-DskipTests=true') |
| } |
| if (config.gpg) { |
| withCredentials([ |
| string(credentialsId: 'gpg-passphrase', variable: 'EGIT_KEYRING_PASSPHRASE') |
| ]) { |
| arguments.add('-Pgpg-sign') |
| |
| tooling.maven(arguments) |
| } |
| } else { |
| tooling.maven(arguments) |
| } |
| } |
| } |
| finally { |
| // replacement for post actions of Jenkins 1.x |
| stage('Results') { |
| tooling.archiveArtifacts([ |
| config.p2project + '/target/repository/**' |
| ]) |
| if (!config.noTests) { |
| tooling.reporting() |
| } |
| } |
| } |
| } |
| } |