From 44fb76fbe846db23316b0b7f2ef56e82bbbf6dfe Mon Sep 17 00:00:00 2001 From: Edward Evans Date: Mon, 9 Sep 2019 14:34:37 +1000 Subject: [PATCH 1/7] Add DCO check step to jenkins Signed-off-by: Edward Evans --- Jenkinsfile | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index ecab0a4b95..30e0bd0fd2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -29,6 +29,7 @@ if (shouldPublish()) { def docker_image_dind = 'docker:18.06.0-ce-dind' def docker_image = 'docker:18.06.0-ce' def build_image = 'pegasyseng/pantheon-build:0.0.7-jdk11' +def python_image = 'python:3' def abortPreviousBuilds() { Run previousBuild = currentBuild.rawBuild.getPreviousBuildInProgress() @@ -54,7 +55,21 @@ if (!shouldPublish()) { try { timeout(time: 1, unit: 'HOURS') { - parallel UnitTests: { + parallel DCOCheck: { + def stage_name = "DCO tests node: " + node { + checkout scm + docker.image(python_image).withRun('/bin/bash').inside() { + stage(stage_name + 'Prepare') { + pip install lftools + } + + stage(stage_name + 'Check') { + lftools dco check + } + } + } + }, UnitTests: { def stage_name = "Unit tests node: " node { checkout scm From 5801cd679b7501d0665bac968d6f5d011501befe Mon Sep 17 00:00:00 2001 From: Edward Evans Date: Tue, 10 Sep 2019 11:26:20 +1000 Subject: [PATCH 2/7] --wip-- --- Jenkinsfile | 207 ---------------------------------------------------- 1 file changed, 207 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 30e0bd0fd2..429e89efee 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -69,213 +69,6 @@ try { } } } - }, UnitTests: { - def stage_name = "Unit tests node: " - node { - checkout scm - docker.image(docker_image_dind).withRun('--privileged') { d -> - docker.image(build_image).inside("--link ${d.id}:docker") { - try { - stage(stage_name + 'Prepare') { - sh './gradlew --no-daemon --parallel clean compileJava compileTestJava assemble' - } - stage(stage_name + 'Unit tests') { - sh './gradlew --no-daemon --parallel build' - } - } finally { - archiveArtifacts '**/build/reports/**' - archiveArtifacts '**/build/test-results/**' - archiveArtifacts 'build/reports/**' - archiveArtifacts 'build/distributions/**' - - stash allowEmpty: true, includes: 'build/distributions/pantheon-*.tar.gz', name: 'distTarBall' - - junit '**/build/test-results/**/*.xml' - } - } - } - } - }, ReferenceTests: { - def stage_name = "Reference tests node: " - node { - checkout scm - docker.image(docker_image_dind).withRun('--privileged') { d -> - docker.image(build_image).inside("--link ${d.id}:docker") { - try { - stage(stage_name + 'Prepare') { - sh './gradlew --no-daemon --parallel clean compileJava compileTestJava assemble' - } - stage(stage_name + 'Reference tests') { - sh './gradlew --no-daemon --parallel referenceTest' - } - } finally { - archiveArtifacts '**/build/reports/**' - archiveArtifacts '**/build/test-results/**' - archiveArtifacts 'build/reports/**' - archiveArtifacts 'build/distributions/**' - - junit '**/build/test-results/**/*.xml' - } - } - } - } - }, IntegrationTests: { - def stage_name = "Integration tests node: " - node { - checkout scm - docker.image(docker_image_dind).withRun('--privileged') { d -> - docker.image(build_image).inside("--link ${d.id}:docker") { - try { - stage(stage_name + 'Prepare') { - sh './gradlew --no-daemon --parallel clean compileJava compileTestJava assemble' - } - stage(stage_name + 'Integration Tests') { - sh './gradlew --no-daemon --parallel integrationTest' - } - stage(stage_name + 'Check Licenses') { - sh './gradlew --no-daemon --parallel checkLicenses' - } - stage(stage_name + 'Check javadoc') { - sh './gradlew --no-daemon --parallel javadoc' - } - stage(stage_name + 'Compile Benchmarks') { - sh './gradlew --no-daemon --parallel compileJmh' - } - } finally { - archiveArtifacts '**/build/reports/**' - archiveArtifacts '**/build/test-results/**' - archiveArtifacts 'build/reports/**' - archiveArtifacts 'build/distributions/**' - - junit '**/build/test-results/**/*.xml' - } - } - } - } - }, AcceptanceTests: { - def stage_name = "Acceptance tests node: " - node { - checkout scm - docker.image(docker_image_dind).withRun('--privileged') { d -> - docker.image(build_image).inside("--link ${d.id}:docker") { - try { - stage(stage_name + 'Prepare') { - sh './gradlew --no-daemon --parallel clean compileJava compileTestJava assemble' - } - stage(stage_name + 'Acceptance Tests') { - sh './gradlew --no-daemon --parallel acceptanceTest' - } - } finally { - archiveArtifacts '**/build/reports/**' - archiveArtifacts '**/build/test-results/**' - archiveArtifacts 'build/reports/**' - archiveArtifacts 'build/distributions/**' - - junit '**/build/test-results/**/*.xml' - } - } - } - } - } - - parallel DockerImage: { - def stage_name = 'Docker image node: ' - def docker_folder = 'docker' - def reports_folder = docker_folder + '/reports' - def dockerfile = docker_folder + '/Dockerfile' - def version = '' - def image = '' - node { - checkout scm - docker.image(build_image).inside() { - stage(stage_name + 'Dockerfile lint') { - sh "docker run --rm -i hadolint/hadolint < ${dockerfile}" - } - - stage(stage_name + 'Build image') { - sh './gradlew distDocker' - } - - stage(stage_name + 'Calculate variables') { - def gradleProperties = readProperties file: 'gradle.properties' - version = gradleProperties.version - def imageRepos = 'pegasyseng' - image = "${imageRepos}/pantheon:${version}" - } - - stage(stage_name + "Test image labels") { - shortCommit = sh(returnStdout: true, script: "git log -n 1 --pretty=format:'%h'").trim() - sh "docker image inspect \ - --format='{{index .Config.Labels \"org.label-schema.vcs-ref\"}}' \ - ${image} \ - | grep ${shortCommit}" - sh "docker image inspect \ - --format='{{index .Config.Labels \"org.label-schema.version\"}}' \ - ${image} \ - | grep ${version}" - } - - try { - stage(stage_name + 'Test image') { - sh "mkdir -p ${reports_folder}" - sh "cd ${docker_folder} && bash test.sh ${image}" - } - } finally { - junit "${reports_folder}/*.xml" - sh "rm -rf ${reports_folder}" - } - - if (shouldPublish()) { - def registry = 'https://registry.hub.docker.com' - def userAccount = 'dockerhub-pegasysengci' - stage(stage_name + 'Push image') { - docker.withRegistry(registry, userAccount) { - docker.image(image).push() - - def additionalTags = [] - if (env.BRANCH_NAME == 'master') { - additionalTags.add('develop') - } - - if (! version ==~ /.*-SNAPSHOT/) { - additionalTags.add('latest') - additionalTags.add(version.split(/\./)[0..1].join('.')) - } - - additionalTags.each { tag -> - docker.image(image).push tag.trim() - } - } - } - } - } - } - }, BintrayPublish: { - def stage_name = "Bintray publish node: " - node { - if (shouldPublish()) { - checkout scm - - docker.image(docker_image_dind).withRun('--privileged') { d -> - docker.image(build_image).inside("--link ${d.id}:docker") { - stage(stage_name + 'Prepare') { - sh './gradlew --no-daemon --parallel clean assemble' - } - stage(stage_name + 'Publish') { - withCredentials([ - usernamePassword( - credentialsId: 'pegasys-bintray', - usernameVariable: 'BINTRAY_USER', - passwordVariable: 'BINTRAY_KEY' - ) - ]) { - sh './gradlew --no-daemon --parallel bintrayUpload' - } - } - } - } - } - } } } } catch (e) { From 923e50253b1a40d33436c680ce3430ed984f95ea Mon Sep 17 00:00:00 2001 From: Edward Evans Date: Tue, 10 Sep 2019 11:28:05 +1000 Subject: [PATCH 3/7] --wip-- --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 429e89efee..fb958e2bcc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ try { def stage_name = "DCO tests node: " node { checkout scm - docker.image(python_image).withRun('/bin/bash').inside() { + docker.image(python_image).withRun('/bin/bash') { stage(stage_name + 'Prepare') { pip install lftools } From 02c9403dc5f741636ba131963ba26b33bdcab4fb Mon Sep 17 00:00:00 2001 From: Edward Evans Date: Tue, 10 Sep 2019 11:29:07 +1000 Subject: [PATCH 4/7] --wip-- --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index fb958e2bcc..e0ae83c44f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ try { def stage_name = "DCO tests node: " node { checkout scm - docker.image(python_image).withRun('/bin/bash') { + docker.image(python_image).args('/bin/bash') { stage(stage_name + 'Prepare') { pip install lftools } From 7028855aa42d252612364969426258cf9386e7e6 Mon Sep 17 00:00:00 2001 From: Edward Evans Date: Tue, 10 Sep 2019 13:05:38 +1000 Subject: [PATCH 5/7] --wip-- --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index e0ae83c44f..3ef84c54ea 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ try { def stage_name = "DCO tests node: " node { checkout scm - docker.image(python_image).args('/bin/bash') { + docker.image(python_image).inside('/bin/sh') { stage(stage_name + 'Prepare') { pip install lftools } From 77219a85833c8e302c4e4da812d73cf14f4b3163 Mon Sep 17 00:00:00 2001 From: Edward Evans Date: Tue, 10 Sep 2019 13:22:14 +1000 Subject: [PATCH 6/7] --wip-- --- Jenkinsfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3ef84c54ea..36ae580e16 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -29,7 +29,7 @@ if (shouldPublish()) { def docker_image_dind = 'docker:18.06.0-ce-dind' def docker_image = 'docker:18.06.0-ce' def build_image = 'pegasyseng/pantheon-build:0.0.7-jdk11' -def python_image = 'python:3' +def python_image = 'edjojob/lftools:latest' def abortPreviousBuilds() { Run previousBuild = currentBuild.rawBuild.getPreviousBuildInProgress() @@ -59,11 +59,7 @@ try { def stage_name = "DCO tests node: " node { checkout scm - docker.image(python_image).inside('/bin/sh') { - stage(stage_name + 'Prepare') { - pip install lftools - } - + docker.image(python_image).inside() { stage(stage_name + 'Check') { lftools dco check } From 22617b2623db1d633050355e1ba21b3c314997a1 Mon Sep 17 00:00:00 2001 From: Edward Evans Date: Tue, 10 Sep 2019 13:24:34 +1000 Subject: [PATCH 7/7] --wip-- --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 36ae580e16..ffd7a7e796 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -29,7 +29,7 @@ if (shouldPublish()) { def docker_image_dind = 'docker:18.06.0-ce-dind' def docker_image = 'docker:18.06.0-ce' def build_image = 'pegasyseng/pantheon-build:0.0.7-jdk11' -def python_image = 'edjojob/lftools:latest' +def python_image = 'edjojob/lftools' def abortPreviousBuilds() { Run previousBuild = currentBuild.rawBuild.getPreviousBuildInProgress()