From 11391f458a94fb7cab6950129020aceed6ffdca0 Mon Sep 17 00:00:00 2001 From: hrb-hub <181954414+hrb-hub@users.noreply.github.com> Date: Wed, 15 Jan 2025 18:03:20 +0100 Subject: [PATCH] [ci] Auto generate release notes when publishing to prod Remove generateReleaseNotes checkbox and generate notes automatically when publishing to production. Close #8279 --- ci/Release.Jenkinsfile | 50 ++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/ci/Release.Jenkinsfile b/ci/Release.Jenkinsfile index eb66162e0886..5f6ae5b647d3 100644 --- a/ci/Release.Jenkinsfile +++ b/ci/Release.Jenkinsfile @@ -12,13 +12,11 @@ pipeline { choice( name: 'target', choices: ['dryRun', 'buildAndPublishToStaging', 'publishToStaging', 'publishToProd'], - description: "publishToStaging and publishToProd do not build. They download artifacts from nexus" + description: "dryRun: build no-op (only the prod version is built for mobile)
" + + "buildAndPublishToStaging: builds staging and prod, uploads both to Nexus, and publishes to staging
" + + "publishToStaging: downloads from Nexus and publishes to staging
" + + "publishToProd: downloads from Nexus, publishes to prod, and generates release notes" ) - booleanParam( - name: 'generateReleaseNotes', - defaultValue: false, - description: "Check if the release notes should be updated in the downstream jobs, uncheck if last runs release notes should be reused" - ) persistentString( name: 'milestone', defaultValue: '', @@ -58,7 +56,8 @@ pipeline { stages { stage("Prepare Release Notes") { agent { label 'master' } - when { expression { return params.generateReleaseNotes && (params.web || params.android || params.ios || params.desktop) } } + // Release Notes are only generating when publishing to Prod + when { expression { return params.target.equals("publishToProd") && (params.web || params.android || params.ios || params.desktop) } } steps { sh "npm ci" script { // create release notes @@ -76,7 +75,6 @@ pipeline { stage("Clients") { environment { BUILD = "${params.target.equals("dryRun") || params.target.equals("buildAndPublishToStaging")}" - PUBLISH_STAGING = "${params.target.equals("buildAndPublishToStaging") || params.target.equals("publishToStaging")}" } // Web/Desktop and Mobile are ran sequentially because we ran into resource allocation issues stages { @@ -97,10 +95,10 @@ pipeline { stage("Publish Web") { when { expression { return !params.target.equals("dryRun") } } steps { - build job: 'tutanota-3-webapp-publish', parameters: params.generateReleaseNotes ? [ + build job: 'tutanota-3-webapp-publish', parameters: params.target.equals("publishToProd") ? [ booleanParam(name: 'DEB', value: true), - booleanParam(name: 'PUBLISH_NPM_MODULES', value: params.target.equals("buildAndPublishToStaging")), - booleanParam(name: 'GITHUB_RELEASE', value: params.target.equals("publishToProd")), + booleanParam(name: 'PUBLISH_NPM_MODULES', value: false), + booleanParam(name: 'GITHUB_RELEASE', value: true), text(name: "releaseNotes", value: releaseNotes.web), ] : [ booleanParam(name: 'DEB', value: true), @@ -143,9 +141,9 @@ pipeline { when { expression { return !params.target.equals("dryRun") } } steps { script { - build job: 'tutanota-3-desktop-publish', parameters: params.generateReleaseNotes ? [ + build job: 'tutanota-3-desktop-publish', parameters: params.target.equals("publishToProd") ? [ booleanParam(name: "DEB", value: true), - booleanParam(name: "GITHUB_RELEASE", value: params.target.equals("publishToProd")), + booleanParam(name: "GITHUB_RELEASE", value: true), text(name: "releaseNotes", value: releaseNotes.desktop), ] : [ booleanParam(name: "DEB", value: true), @@ -180,15 +178,15 @@ pipeline { when { expression { return !params.target.equals("dryRun") } } steps { script { - build job: 'tutanota-3-ios-publish', parameters: params.generateReleaseNotes ? [ - booleanParam(name: "STAGING", value: PUBLISH_STAGING.toBoolean()), - booleanParam(name: "PROD", value: params.target.equals("publishToProd")), - booleanParam(name: "APP_STORE_NOTES", value: params.target.equals("publishToProd")), - booleanParam(name: "GITHUB_RELEASE", value: params.target.equals("publishToProd")), + build job: 'tutanota-3-ios-publish', parameters: params.target.equals("publishToProd") ? [ + booleanParam(name: "STAGING", value: false), + booleanParam(name: "PROD", value: true), + booleanParam(name: "APP_STORE_NOTES", value: true), + booleanParam(name: "GITHUB_RELEASE", value: true), text(name: "releaseNotes", value: releaseNotes.ios), ] : [ - booleanParam(name: "STAGING", value: PUBLISH_STAGING.toBoolean()), - booleanParam(name: "PROD", value: params.target.equals("publishToProd")), + booleanParam(name: "STAGING", value: true), + booleanParam(name: "PROD", value: false), booleanParam(name: "APP_STORE_NOTES", value: false), booleanParam(name: "GITHUB_RELEASE", value: false), ] @@ -217,14 +215,14 @@ pipeline { when { expression { return !params.target.equals("dryRun") } } steps { script { - build job: 'tutanota-3-android-publish', parameters: params.generateReleaseNotes ? [ - booleanParam(name: "STAGING", value: PUBLISH_STAGING.toBoolean()), - booleanParam(name: "PROD", value: params.target.equals("publishToProd")), - booleanParam(name: "GITHUB_RELEASE", value: params.target.equals("publishToProd")), + build job: 'tutanota-3-android-publish', parameters: params.target.equals("publishToProd") ? [ + booleanParam(name: "STAGING", value: false), + booleanParam(name: "PROD", value: true), + booleanParam(name: "GITHUB_RELEASE", value: true), text(name: "releaseNotes", value: releaseNotes.android), ] : [ - booleanParam(name: "STAGING", value: PUBLISH_STAGING.toBoolean()), - booleanParam(name: "PROD", value: params.target.equals("publishToProd")), + booleanParam(name: "STAGING", value: true), + booleanParam(name: "PROD", value: false), booleanParam(name: "GITHUB_RELEASE", value: false), ] } // script