diff --git a/.ci/dev/publish-branch/Jenkinsfile.janky b/.ci/dev/publish-branch/Jenkinsfile.janky new file mode 100644 index 0000000000..b22589b62a --- /dev/null +++ b/.ci/dev/publish-branch/Jenkinsfile.janky @@ -0,0 +1,103 @@ +#!groovy +/** + * Jenkins pipeline to build Corda OS nightly snapshots + */ + +/** + * Kill already started job. + * Assume new commit takes precendence and results from previous + * unfinished builds are not required. + * This feature doesn't play well with disableConcurrentBuilds() option + */ +@Library('corda-shared-build-pipeline-steps') +import static com.r3.build.BuildControl.killAllExistingBuildsForJob + +killAllExistingBuildsForJob(env.JOB_NAME, env.BUILD_NUMBER.toInteger()) + +/* +** calculate the stage for NexusIQ evaluation +** * build for snapshots +*/ +def nexusDefaultIqStage = "build" + +/** + * make sure calculated default value of NexusIQ stage is first in the list + * thus making it default for the `choice` parameter + */ +def nexusIqStageChoices = [nexusDefaultIqStage].plus( + [ + 'develop', + 'build', + 'stage-release', + 'release', + 'operate' + ].minus([nexusDefaultIqStage])) + +pipeline { + agent { label 'standard' } + + options { + timestamps() + ansiColor('xterm') + overrideIndexTriggers(false) + timeout(time: 3, unit: 'HOURS') + buildDiscarder(logRotator(daysToKeepStr: '14', artifactDaysToKeepStr: '14')) + } + + parameters { + choice choices: nexusIqStageChoices, description: 'NexusIQ stage for code evaluation', name: 'nexusIqStage' + } + + triggers { + cron '@midnight' + } + + environment { + // Replace / with :: as links from Jenkins to Artifactory are broken if we use slashes + // in the name + ARTIFACTORY_BUILD_NAME = "Corda / Publish / Publish Nightly to Artifactory" + .replaceAll("/", " :: ") + DOCKER_URL = "https://index.docker.io/v1/" + } + + stages { + stage('Publish to Artifactory') { + steps { + rtServer ( + id: 'R3-Artifactory', + url: 'https://software.r3.com/artifactory', + credentialsId: 'artifactory-credentials' + ) + rtGradleDeployer ( + id: 'deployer', + serverId: 'R3-Artifactory', + repo: 'dc-lib-dev', + ) + withCredentials([ + usernamePassword(credentialsId: 'artifactory-credentials', + usernameVariable: 'CORDA_ARTIFACTORY_USERNAME', + passwordVariable: 'CORDA_ARTIFACTORY_PASSWORD')]) { + rtGradleRun ( + usesPlugin: true, + useWrapper: true, + switches: "--no-daemon -s", + tasks: 'artifactoryPublish', + deployerId: 'deployer', + buildName: env.ARTIFACTORY_BUILD_NAME + ) + } + rtPublishBuildInfo ( + serverId: 'R3-Artifactory', + buildName: env.ARTIFACTORY_BUILD_NAME + ) + } + } + } + + + post { + cleanup { + deleteDir() /* clean up our workspace */ + } + } +}