From e88c1d89fda832d4f948dd80912928ad1a23f352 Mon Sep 17 00:00:00 2001 From: Rodrigo Antunes Date: Wed, 24 Jul 2024 14:41:28 -0300 Subject: [PATCH 1/5] Adjust release pipelines for the Apache 10 release (#1789) --- .ci/jenkins/Jenkinsfile.build-image | 2 +- .ci/jenkins/Jenkinsfile.deploy | 1 - .ci/jenkins/dsl/jobs.groovy | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.ci/jenkins/Jenkinsfile.build-image b/.ci/jenkins/Jenkinsfile.build-image index aea006cea..683fd60d9 100644 --- a/.ci/jenkins/Jenkinsfile.build-image +++ b/.ci/jenkins/Jenkinsfile.build-image @@ -459,5 +459,5 @@ String getReleaseSvnCredsId() { } String getImageArtifactReleaseVersion() { - return env.IMAGE_ARTIFACT_RELEASE_VERSION + return params.IMAGE_ARTIFACT_RELEASE_VERSION } diff --git a/.ci/jenkins/Jenkinsfile.deploy b/.ci/jenkins/Jenkinsfile.deploy index 0f1dcd5c8..a6e20a773 100644 --- a/.ci/jenkins/Jenkinsfile.deploy +++ b/.ci/jenkins/Jenkinsfile.deploy @@ -233,7 +233,6 @@ pipeline { } } } - stage('Finalize') { steps { script { diff --git a/.ci/jenkins/dsl/jobs.groovy b/.ci/jenkins/dsl/jobs.groovy index 09827dc0a..4935ed2fb 100644 --- a/.ci/jenkins/dsl/jobs.groovy +++ b/.ci/jenkins/dsl/jobs.groovy @@ -151,8 +151,8 @@ void setupDeployJob(JobType jobType) { stringParam('KOGITO_ARTIFACTS_VERSION', '', 'Optional. If artifacts\' version is different from PROJECT_VERSION.') if (jobType == JobType.RELEASE) { stringParam('QUARKUS_PLATFORM_VERSION', '', 'Allow to override the Quarkus Platform version') - stringParam('GIT_TAG_NAME', '', 'Git tag to be created') } + stringParam('GIT_TAG_NAME', '', 'Optional if not RELEASE. Tag to be created in the repository') stringParam('KOGITO_PR_BRANCH', '', 'PR branch name') booleanParam('SEND_NOTIFICATION', false, 'In case you want the pipeline to send a notification on CI channel for this run.') @@ -216,7 +216,7 @@ void setupBuildImageJob(JobType jobType) { stringParam('DEPLOY_IMAGE_TAG', '', 'Image tag to use to deploy images') booleanParam('DEPLOY_WITH_LATEST_TAG', false, 'Set to true if you want the deployed images to also be with the `latest` tag') booleanParam('EXPORT_AND_GPG_SIGN_IMAGE', jobType == JobType.RELEASE, 'Set to true if should images be exported and signed.') - stringParam('IMAGE_ARTIFACT_RELEASE_VERSION', '', 'Set the release version to be attached to the images artifacts names') + stringParam('IMAGE_ARTIFACT_RELEASE_VERSION', '', 'Optional if not RELEASE. Set the release version to be attached to the images artifacts names') } } } From c282e12eb61d6117d4adf9ab887976981ea340c1 Mon Sep 17 00:00:00 2001 From: Rodrigo Antunes Date: Mon, 29 Jul 2024 08:03:30 -0300 Subject: [PATCH 2/5] kie-issues#1397 - Adjust git tag creation for Apache 10 release (#1790) * Adjust git tag creation for Apache 10 release * Add image suffix to the images artifact --- .ci/jenkins/Jenkinsfile.build-image | 2 +- .ci/jenkins/Jenkinsfile.deploy | 89 ++--------------------------- 2 files changed, 6 insertions(+), 85 deletions(-) diff --git a/.ci/jenkins/Jenkinsfile.build-image b/.ci/jenkins/Jenkinsfile.build-image index 683fd60d9..2f96db358 100644 --- a/.ci/jenkins/Jenkinsfile.build-image +++ b/.ci/jenkins/Jenkinsfile.build-image @@ -208,7 +208,7 @@ pipeline { } steps { script { - def resultingFileName = "incubator-kie-${getImageArtifactReleaseVersion()}-${getBuildImageName()}.tar.gz" + def resultingFileName = "incubator-kie-${getImageArtifactReleaseVersion()}-${getBuildImageName()}-image.tar.gz" def signatureFileName = "${resultingFileName}.asc" sh """ docker pull ${getBuiltImageTag()} diff --git a/.ci/jenkins/Jenkinsfile.deploy b/.ci/jenkins/Jenkinsfile.deploy index a6e20a773..c43854363 100644 --- a/.ci/jenkins/Jenkinsfile.deploy +++ b/.ci/jenkins/Jenkinsfile.deploy @@ -18,8 +18,6 @@ deployProperties = [:] -changesDone = false - BUILT_IMAGES = Collections.synchronizedList([]) BUILD_FAILED_IMAGES = Collections.synchronizedList([]) TEST_FAILED_IMAGES = Collections.synchronizedList([]) @@ -73,22 +71,6 @@ pipeline { } } - stage('Prepare for PR') { - when { - expression { return isRelease() } - } - steps { - script { - dir(getRepoName()) { - if (githubscm.isBranchExist('origin', getPRBranch())) { - githubscm.removeRemoteBranch('origin', getPRBranch(), getGitAuthorPushCredsId()) - } - githubscm.createBranch(getPRBranch()) - } - } - } - } - stage('Setup Quarkus platform version') { when { expression { isRelease() } @@ -124,7 +106,7 @@ pipeline { } sh versionCmd - commitAndPushChanges("Update project version to ${getProjectVersion()}") + commitAndTagChanges("[${getBuildBranch()}] Update version to ${getProjectVersion()}") } } } @@ -172,67 +154,6 @@ pipeline { } } } - - stage('Create PR') { - when { - expression { - return changesDone && isRelease() - } - } - steps { - script { - dir(getRepoName()) { - def commitMsg = "[${getBuildBranch()}] Update Maven artifacts" - def prBody = "Generated by build ${BUILD_TAG}: ${BUILD_URL}." - if (isRelease()) { - commitMsg = "[${getBuildBranch()}] Update project version to ${getProjectVersion()}" - prBody += '\nPlease do not merge, it should be merged automatically.' - } else if (currentBuild.currentResult != 'SUCCESS') { - commitMsg += " (${currentBuild.currentResult})" - prBody += '\n\nSuccessful images:\n' - getBuiltImages().each { - prBody += "- ${it}\n" - } - if (getBuildFailedImages()) { - prBody += '\nBuild failures on those images:\n' - getBuildFailedImages().each { - prBody += "- ${it}\n" - } - } else { - prBody += '\nImages were all successfully built but some other problem occured in the pipeline execution...\n' - } - if (getTestFailedImages()) { - prBody += '\nTest failures on those images:\n' - getTestFailedImages().each { - prBody += "- ${it}\n" - } - } else { - prBody += '\nImages were all successfully built but some other problem occured in the pipeline execution...\n' - } - prBody += '\nSee build url above for more information' - } - String prLink = githubscm.createPR(commitMsg, prBody, getBuildBranch(), getGitAuthorPushCredsId()) - deployProperties["${getRepoName()}.pr.link"] = prLink - - // Create a new tag - githubscm.setUserConfigFromCreds(getGitAuthorPushCredsId()) - githubscm.tagRepository(getGitTagName()) - githubscm.pushRemoteTag('origin', getGitTagName(), getGitAuthorPushCredsId()) - } - } - } - post { - always { - script { - setDeployPropertyIfNeeded("${getRepoName()}.pr.source.uri", "https://github.com/${getGitAuthor()}/${getRepoName()}") - setDeployPropertyIfNeeded("${getRepoName()}.pr.source.ref", getPRBranch()) - setDeployPropertyIfNeeded("${getRepoName()}.pr.target.uri", "https://github.com/${getGitAuthor()}/${getRepoName()}") - setDeployPropertyIfNeeded("${getRepoName()}.pr.target.ref", getBuildBranch()) - setDeployPropertyIfNeeded("${getRepoName()}.tag.name", getGitTagName()) - } - } - } - } stage('Finalize') { steps { script { @@ -283,11 +204,11 @@ void checkoutRepo() { checkout(githubscm.resolveRepository(getRepoName(), getGitAuthor(), getBuildBranch(), false, getGitAuthorCredsId())) } -void commitAndPushChanges(String commitMsg) { +void commitAndTagChanges(String commitMsg) { githubscm.setUserConfigFromCreds(getGitAuthorPushCredsId()) githubscm.commitChanges(commitMsg) - githubscm.pushObject('origin', getPRBranch(), getGitAuthorPushCredsId()) - changesDone = true + githubscm.tagRepository(getGitTagName()) + githubscm.pushRemoteTag('origin', getGitTagName(), getGitAuthorPushCredsId()) } void createBuildAndTestStageClosure(String image) { @@ -363,7 +284,7 @@ List getTestFailedImages() { //////////////////////////////////////////////////////////////////////// boolean isDeployImage() { - return !Boolean.valueOf(env.DISABLE_IMAGES_DEPLOY) + return !env.DISABLE_IMAGES_DEPLOY } boolean isDeployImageInOpenshiftRegistry() { From 5c75dce7c55ec921c976af062e6803cf4b52ef33 Mon Sep 17 00:00:00 2001 From: Rodrigo Antunes Date: Wed, 14 Aug 2024 16:10:37 -0300 Subject: [PATCH 3/5] Fix release utils (#1792) --- .ci/jenkins/Jenkinsfile.build-image | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/jenkins/Jenkinsfile.build-image b/.ci/jenkins/Jenkinsfile.build-image index 2f96db358..8a89fb281 100644 --- a/.ci/jenkins/Jenkinsfile.build-image +++ b/.ci/jenkins/Jenkinsfile.build-image @@ -214,9 +214,9 @@ pipeline { docker pull ${getBuiltImageTag()} docker save ${getBuiltImageTag()} | gzip > ${resultingFileName} """ - release.gpgImportKeyFromStringWithoutPassword(getReleaseGpgSignKeyCredsId()) - release.gpgSignFileDetachedSignatureWithoutPassword(resultingFileName, signatureFileName) - release.svnUploadFileToRepository(getReleaseSvnRepository(), getReleaseSvnCredsId(), getImageArtifactReleaseVersion(), resultingFileName, signatureFileName) + releaseUtils.gpgImportKeyFromStringWithoutPassword(getReleaseGpgSignKeyCredsId()) + releaseUtils.gpgSignFileDetachedSignatureWithoutPassword(resultingFileName, signatureFileName) + releaseUtils.svnUploadFileToRepository(getReleaseSvnRepository(), getReleaseSvnCredsId(), getImageArtifactReleaseVersion(), resultingFileName, signatureFileName) } } post { From 321675d257a5322815cf1e78e46ffb7029df6dde Mon Sep 17 00:00:00 2001 From: Rodrigo Antunes Date: Fri, 30 Aug 2024 13:17:00 -0300 Subject: [PATCH 4/5] Kogito Images release deploy job fixes (#1799) --- .ci/jenkins/Jenkinsfile.build-image | 35 ++++++++++++++++++++--------- .ci/jenkins/Jenkinsfile.deploy | 30 +++++++++++++++++++------ .ci/jenkins/dsl/jobs.groovy | 4 ++-- scripts/common.py | 13 +++++++++++ scripts/update-repository.py | 4 ++++ 5 files changed, 66 insertions(+), 20 deletions(-) diff --git a/.ci/jenkins/Jenkinsfile.build-image b/.ci/jenkins/Jenkinsfile.build-image index 8a89fb281..bd3909348 100644 --- a/.ci/jenkins/Jenkinsfile.build-image +++ b/.ci/jenkins/Jenkinsfile.build-image @@ -87,19 +87,23 @@ pipeline { if (getMavenArtifactRepository()) { echo "Setup Repository url to '${getMavenArtifactRepository()}'" - runPythonCommand("python scripts/update-repository.py --repo-url ${getMavenArtifactRepository()}") + runPythonCommand("python scripts/update-repository.py --repo-urls ${getMavenArtifactRepository()}") } } } } - stage('Update kogito version') { + stage('Update project version') { when { expression { params.UPDATE_KOGITO_VERSION != '' } } steps { script { - runPythonCommand("python scripts/manage-kogito-version.py --bump-to ${params.UPDATE_KOGITO_VERSION} --confirm") + versionCmd = "python scripts/manage-kogito-version.py --bump-to ${params.UPDATE_KOGITO_VERSION} --confirm" + if (isRelease()) { + versionCmd += " --examples-ref ${getSourceBranch()}" + } + sh versionCmd } } } @@ -128,7 +132,7 @@ pipeline { int freePort = cloud.findFreePort() env.localRegistryUrl = cloud.startLocalRegistry(freePort) - cloud.prepareForDockerMultiplatformBuild([env.localRegistryUrl],[cloud.getDockerIOMirrorRegistryConfig()], false) + cloud.prepareForDockerMultiplatformBuild([env.localRegistryUrl], [cloud.getDockerIOMirrorRegistryConfig()], false) // Generate the Dockerfile runPythonCommand("make build-image ${getMakeBuildImageArgs()} image_name=${getBuildImageName()} ignore_test=true ignore_tag=true build_options='--dry-run'") @@ -184,7 +188,7 @@ pipeline { script { updateGithubCommitStatus('PENDING', 'Tests in progress') - String testImageTag = "docker.io/apache/incubator-kie-${getBuildImageName()}:${getImageVersion()}" + String testImageTag = "${getDeployImageRegistry()}/${getDeployImageNamespace()}/incubator-kie-${getBuildImageName()}:${getImageVersion()}" String builtImageTag = getBuiltImageTag() // Pull and tag to test image sh """ @@ -208,11 +212,12 @@ pipeline { } steps { script { - def resultingFileName = "incubator-kie-${getImageArtifactReleaseVersion()}-${getBuildImageName()}-image.tar.gz" - def signatureFileName = "${resultingFileName}.asc" + String resultingFileName = "incubator-kie-${getImageArtifactReleaseVersion()}-${getBuildImageName()}-image.tar.gz" + String signatureFileName = "${resultingFileName}.asc" sh """ docker pull ${getBuiltImageTag()} - docker save ${getBuiltImageTag()} | gzip > ${resultingFileName} + docker tag ${getBuiltImageTag()} ${getBuiltDeployImageTag()} + docker save ${getBuiltDeployImageTag()} | gzip > ${resultingFileName} """ releaseUtils.gpgImportKeyFromStringWithoutPassword(getReleaseGpgSignKeyCredsId()) releaseUtils.gpgSignFileDetachedSignatureWithoutPassword(resultingFileName, signatureFileName) @@ -269,9 +274,13 @@ String getImageVersion() { return runPythonCommand('make display-image-version', true).trim() } +String getBuiltDeployImageTag(String imageTag = '') { + return "${getDeployImageRegistry()}/${getDeployImageNamespace()}/${getFinalImageName()}:${imageTag ?: getDeployImageTag()}" +} + String getBuiltImageTag(String imageTag = '') { if (shouldDeployImage()) { - return "${getDeployImageRegistry()}/${getDeployImageNamespace()}/${getFinalImageName()}:${imageTag ?: getDeployImageTag()}" + return getBuiltDeployImageTag(imageTag) } return "${env.localRegistryUrl}/${getBuildImageName()}:${githubscm.getCommitHash()}" } @@ -316,7 +325,7 @@ String getDeployImageTag() { } String getFinalImageName() { - return "incubator-kie-" + getBuildImageName() + (getDeployImageNameSuffix() ? "-${getDeployImageNameSuffix()}" : '') + return 'incubator-kie-' + getBuildImageName() + (getDeployImageNameSuffix() ? "-${getDeployImageNameSuffix()}" : '') } boolean isDeployLatestTag() { @@ -440,7 +449,7 @@ String getTriggeringProjectName() { if (currentBuild.upstreamBuilds) { return currentBuild.upstreamBuilds[0].projectName } - return "" + return '' } String getReleaseGpgSignKeyCredsId() { return env.RELEASE_GPG_SIGN_KEY_CREDS_ID @@ -461,3 +470,7 @@ String getReleaseSvnCredsId() { String getImageArtifactReleaseVersion() { return params.IMAGE_ARTIFACT_RELEASE_VERSION } + +boolean isRelease() { + return env.RELEASE ? env.RELEASE.toBoolean() : false +} diff --git a/.ci/jenkins/Jenkinsfile.deploy b/.ci/jenkins/Jenkinsfile.deploy index c43854363..f62e41b5a 100644 --- a/.ci/jenkins/Jenkinsfile.deploy +++ b/.ci/jenkins/Jenkinsfile.deploy @@ -24,7 +24,7 @@ TEST_FAILED_IMAGES = Collections.synchronizedList([]) pipeline { agent { - docker { + docker { image env.AGENT_DOCKER_BUILDER_IMAGE args env.AGENT_DOCKER_BUILDER_ARGS label util.avoidFaultyNodes() @@ -99,14 +99,12 @@ pipeline { dir(getRepoName()) { versionCmd = "python scripts/manage-kogito-version.py --bump-to ${getProjectVersion()} --confirm" if (getBuildBranch() != 'main') { - versionCmd += " --examples-ref ${!isRelease() ? 'nightly-' : ''}${getBuildBranch()}" + versionCmd += " --examples-ref ${getBuildBranch()}" } if (getKogitoArtifactsVersion()) { versionCmd += " --artifacts-version ${getKogitoArtifactsVersion()}" } sh versionCmd - - commitAndTagChanges("[${getBuildBranch()}] Update version to ${getProjectVersion()}") } } } @@ -154,6 +152,22 @@ pipeline { } } } + + stage('Commit and Tag changes') { + when { + expression { return isRelease() } + } + steps { + script { + if (!getBuildFailedImages()) { + dir(getRepoName()) { + commitAndTagChanges("[${getBuildBranch()}] Update version to ${getProjectVersion()}") + } + } + } + } + } + stage('Finalize') { steps { script { @@ -217,16 +231,18 @@ void createBuildAndTestStageClosure(String image) { List buildParams = [] buildParams.add(string(name: 'DISPLAY_NAME', value: "${params.DISPLAY_NAME} - ${image}")) buildParams.add(string(name: 'BUILD_IMAGE_NAME', value: image)) - buildParams.add(string(name: 'SOURCE_AUTHOR', value: isRelease() ? getGitAuthor() : getGitAuthor())) - buildParams.add(string(name: 'SOURCE_BRANCH', value: isRelease() ? getPRBranch() : getBuildBranch())) + buildParams.add(string(name: 'SOURCE_AUTHOR', value: getGitAuthor())) + buildParams.add(string(name: 'SOURCE_BRANCH', value: getBuildBranch())) - buildParams.add(string(name: 'MAVEN_ARTIFACTS_REPOSITORY', value: env.MAVEN_ARTIFACT_REPOSITORY ?: (isRelease() ? env.DEFAULT_STAGING_REPOSITORY : ''))) + buildParams.add(string(name: 'MAVEN_ARTIFACTS_REPOSITORY', value: env.MAVEN_ARTIFACT_REPOSITORY)) buildParams.add(string(name: 'BUILD_KOGITO_APPS_URI', value: params.APPS_URI)) buildParams.add(string(name: 'BUILD_KOGITO_APPS_REF', value: params.APPS_REF)) buildParams.add(booleanParam(name: 'SKIP_TESTS', value: params.SKIP_TESTS)) buildParams.add(string(name: 'TESTS_KOGITO_EXAMPLES_URI', value: params.EXAMPLES_URI)) buildParams.add(string(name: 'TESTS_KOGITO_EXAMPLES_REF', value: params.EXAMPLES_REF)) + buildParams.add(string(name: 'UPDATE_KOGITO_VERSION', value: isRelease() ? getProjectVersion() : '')) + buildParams.add(booleanParam(name: 'DEPLOY_IMAGE', value: isDeployImage())) buildParams.add(booleanParam(name: 'DEPLOY_IMAGE_USE_OPENSHIFT_REGISTRY', value: isDeployImageInOpenshiftRegistry())) buildParams.add(string(name: 'DEPLOY_IMAGE_REGISTRY_USER_CREDENTIALS_ID', value: getDeployImageRegistryUserCredentialsId())) diff --git a/.ci/jenkins/dsl/jobs.groovy b/.ci/jenkins/dsl/jobs.groovy index 4935ed2fb..22f6e94f4 100644 --- a/.ci/jenkins/dsl/jobs.groovy +++ b/.ci/jenkins/dsl/jobs.groovy @@ -176,8 +176,8 @@ void setupBuildImageJob(JobType jobType) { RELEASE_GPG_SIGN_KEY_CREDS_ID: Utils.getReleaseGpgSignKeyCredentialsId(this), RELEASE_GPG_SIGN_PASSPHRASE_CREDS_ID: Utils.getReleaseGpgSignPassphraseCredentialsId(this), - RELEASE_SVN_REPOSITORY: Utils.getReleaseSvnCredentialsId(this), - RELEASE_SVN_CREDS_ID: Utils.getReleaseSvnStagingRepository(this) + RELEASE_SVN_REPOSITORY: Utils.getReleaseSvnStagingRepository(this), + RELEASE_SVN_CREDS_ID: Utils.getReleaseSvnCredentialsId(this) ]) KogitoJobTemplate.createPipelineJob(this, jobParams)?.with { logRotator { diff --git a/scripts/common.py b/scripts/common.py index e65129542..26592b361 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -430,6 +430,19 @@ def update_maven_repo_in_setup_maven(repo_url, replace_default_repository): replacement = 'export MAVEN_REPO_URL="{}"'.format(repo_url) update_in_file(SETUP_MAVEN_SCRIPT, pattern, replacement) +def update_maven_repos_in_setup_maven(repos_url): + """ + Update maven repositories into setup-maven.sh script + :param repos_url: Maven repositories urls + """ + repo_list = repos_url.split(',') + print("Set maven repos {} in setup-maven script".format(repo_list)) + pattern = re.compile(r'(# export MAVEN_REPO_URL=.*)') + replacement = f"export MAVEN_REPOS={','.join(['REPO_' + str(i) for i, _ in enumerate(repo_list)])}\n" + for i, value in enumerate(repo_list): + replacement += f"export REPO_{i}_MAVEN_REPO_URL={value}\n" + update_in_file(SETUP_MAVEN_SCRIPT, pattern, replacement) + def update_env_value(env_name, env_value): """ Update environment value into the given yaml module/image file diff --git a/scripts/update-repository.py b/scripts/update-repository.py index f854b37d9..48ad38d5d 100644 --- a/scripts/update-repository.py +++ b/scripts/update-repository.py @@ -32,6 +32,7 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(description='Update Maven information in repo from the given artifact url and ' 'version.') + parser.add_argument('--repo-urls', dest='repo_urls', help='Defines the urls of the repositories to setup maven, comma (,) separated') parser.add_argument('--repo-url', dest='repo_url', help='Defines the url of the repository to setup into the tests') parser.add_argument('--replace-default-repo', dest='replace_default_repo', default=False, action='store_true', help='Enable if repo-url should replace the default repository') @@ -53,6 +54,9 @@ parser.add_argument('--tests-only', dest='tests_only', default=False, action='store_true', help='Update product modules/images') args = parser.parse_args() + if args.repo_urls: + common.update_maven_repos_in_setup_maven(args.repo_urls) + if args.repo_url: common.update_maven_repo_in_build_config(args.repo_url, args.replace_default_repo) common.update_maven_repo_in_setup_maven(args.repo_url, args.replace_default_repo) From cbd9c528f55c6f1885950a65c23355c1bbc63938 Mon Sep 17 00:00:00 2001 From: Rodrigo Antunes Date: Tue, 3 Sep 2024 13:45:30 -0300 Subject: [PATCH 5/5] Push missing checksum file to the SVN repository (#1800) --- .ci/jenkins/Jenkinsfile.build-image | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.ci/jenkins/Jenkinsfile.build-image b/.ci/jenkins/Jenkinsfile.build-image index bd3909348..a7d9c33f4 100644 --- a/.ci/jenkins/Jenkinsfile.build-image +++ b/.ci/jenkins/Jenkinsfile.build-image @@ -214,6 +214,7 @@ pipeline { script { String resultingFileName = "incubator-kie-${getImageArtifactReleaseVersion()}-${getBuildImageName()}-image.tar.gz" String signatureFileName = "${resultingFileName}.asc" + String checksumFileName = "${resultingFileName}.sha512" sh """ docker pull ${getBuiltImageTag()} docker tag ${getBuiltImageTag()} ${getBuiltDeployImageTag()} @@ -221,7 +222,7 @@ pipeline { """ releaseUtils.gpgImportKeyFromStringWithoutPassword(getReleaseGpgSignKeyCredsId()) releaseUtils.gpgSignFileDetachedSignatureWithoutPassword(resultingFileName, signatureFileName) - releaseUtils.svnUploadFileToRepository(getReleaseSvnRepository(), getReleaseSvnCredsId(), getImageArtifactReleaseVersion(), resultingFileName, signatureFileName) + releaseUtils.svnUploadFileToRepository(getReleaseSvnRepository(), getReleaseSvnCredsId(), getImageArtifactReleaseVersion(), resultingFileName, signatureFileName, checksumFileName) } } post {