From 7f212d348b8f08ea51ecf490242e0d07c064cf9b Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 20 Oct 2020 16:21:53 +0100 Subject: [PATCH 01/12] [packaging][beats-tester] use commit id binaries --- .ci/beats-tester.groovy | 20 +++++++++++++++----- .ci/jobs/beats-tester.yml | 4 ++-- .ci/packaging.groovy | 10 +++++++++- Jenkinsfile | 6 ++++++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/.ci/beats-tester.groovy b/.ci/beats-tester.groovy index 91781a98d31..d1227f82be3 100644 --- a/.ci/beats-tester.groovy +++ b/.ci/beats-tester.groovy @@ -54,7 +54,6 @@ pipeline { options { skipDefaultCheckout() } when { branch 'master' } steps { - // TODO: to use the git commit that triggered the upstream build runBeatsTesterJob(version: "${env.VERSION}-SNAPSHOT") } } @@ -62,7 +61,6 @@ pipeline { options { skipDefaultCheckout() } when { branch '*.x' } steps { - // TODO: to use the git commit that triggered the upstream build runBeatsTesterJob(version: "${env.VERSION}-SNAPSHOT") } } @@ -96,11 +94,23 @@ pipeline { } def runBeatsTesterJob(Map args = [:]) { - if (args.apm && args.beats) { + def apm = args.get('apm', '') + def beats = args.get('beats', '') + + if (isUpstreamTrigger()) { + copyArtifacts(filter: 'beats-tester.properties', + flatten: true, + projectName: "Beats/packaging/${env.JOB_BASE_NAME}", + selector: upstream(fallbackToLastSuccessful: true)) + def props = readProperties('beats-tester.properties') + apm = props.get('APM_URL_BASE', '') + beats = props.get('BEATS_URL_BASE', '') + } + if (apm?.trim() || beats?.trim()) { build(job: env.BEATS_TESTER_JOB, propagate: false, wait: false, parameters: [ - string(name: 'APM_URL_BASE', value: args.apm), - string(name: 'BEATS_URL_BASE', value: args.beats), + string(name: 'APM_URL_BASE', value: apm), + string(name: 'BEATS_URL_BASE', value: beats), string(name: 'VERSION', value: args.version) ]) } else { diff --git a/.ci/jobs/beats-tester.yml b/.ci/jobs/beats-tester.yml index 808123a225e..14cc1007c56 100644 --- a/.ci/jobs/beats-tester.yml +++ b/.ci/jobs/beats-tester.yml @@ -1,8 +1,8 @@ --- - job: name: Beats/beats-tester - display-name: Beats Tester - description: Run the beats-tester + display-name: Beats Tester orchestrator + description: Orchestrate the beats-tester when packaging finished successfully view: Beats disabled: false project-type: multibranch diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 8936de2fb3e..e059af1b6bf 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -168,6 +168,14 @@ pipeline { } } } + } post { + success { + writeFile file: 'beats-tester.properties', text: """## To be consumed by the beats-tester pipeline +COMMIT=${env.GIT_BASE_COMMIT} +BEATS_URL_BASE=https://storage.googleapis.com/beats-ci-artifacts/commits/${env.GIT_BASE_COMMIT} +VERSION=${env.JOB_BASE_NAME}-SNAPSHOT""" + archiveArtifacts artifacts: 'beats-tester.properties' + } } } @@ -330,7 +338,7 @@ def publishPackages(baseDir){ uploadPackages("${bucketUri}/${beatsFolderName}", baseDir) // Copy those files to another location with the sha commit to test them - // aftewords. + // afterwords. bucketUri = "gs://${JOB_GCS_BUCKET}/commits/${env.GIT_BASE_COMMIT}" uploadPackages("${bucketUri}/${beatsFolderName}", baseDir) } diff --git a/Jenkinsfile b/Jenkinsfile index 4099e820f97..e1632157f37 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -120,6 +120,12 @@ pipeline { } } post { + success { + writeFile file: 'packaging.properties', text: """## To be consumed by the packaging pipeline +COMMIT=${env.GIT_BASE_COMMIT} +VERSION=${BRANCH_NAME}-SNAPSHOT""" + archiveArtifacts artifacts: 'packaging.properties' + } always { deleteDir() unstashV2(name: 'source', bucket: "${JOB_GCS_BUCKET}", credentialsId: "${JOB_GCS_CREDENTIALS}") From cad56855f8e7dd69299a2ed513f45714725ce904 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 20 Oct 2020 16:29:41 +0100 Subject: [PATCH 02/12] [packaging] use commit version --- .ci/packaging.groovy | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index e059af1b6bf..19e3b65a5d7 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -65,7 +65,18 @@ pipeline { options { skipDefaultCheckout() } steps { deleteDir() - gitCheckout(basedir: "${BASE_DIR}") + script { + if(isUpstreamTrigger()) { + copyArtifacts(filter: 'packaging.properties', + flatten: true, + projectName: "Beats/beats/${env.JOB_BASE_NAME}", + selector: upstream(fallbackToLastSuccessful: true)) + def props = readProperties('packaging.properties') + gitCheckout(basedir: "${BASE_DIR}", branch: props.COMMIT) + } else { + gitCheckout(basedir: "${BASE_DIR}") + } + } setEnvVar("GO_VERSION", readFile("${BASE_DIR}/.go-version").trim()) stashV2(name: 'source', bucket: "${JOB_GCS_BUCKET_STASH}", credentialsId: "${JOB_GCS_CREDENTIALS}") } From 9aa0feb2da2dcc627097b8716e514ce23021f9a0 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 21 Oct 2020 12:13:26 +0100 Subject: [PATCH 03/12] Fix missing parenthesis --- .ci/packaging.groovy | 7 ++++--- Jenkinsfile | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 25bad9309b6..a7237231d11 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -179,12 +179,13 @@ pipeline { } } } - } post { + } + post { success { - writeFile file: 'beats-tester.properties', text: """## To be consumed by the beats-tester pipeline + writeFile(file: 'beats-tester.properties', text: """## To be consumed by the beats-tester pipeline COMMIT=${env.GIT_BASE_COMMIT} BEATS_URL_BASE=https://storage.googleapis.com/beats-ci-artifacts/commits/${env.GIT_BASE_COMMIT} -VERSION=${env.JOB_BASE_NAME}-SNAPSHOT""" +VERSION=${env.JOB_BASE_NAME}-SNAPSHOT""") archiveArtifacts artifacts: 'beats-tester.properties' } } diff --git a/Jenkinsfile b/Jenkinsfile index e1632157f37..c7610edbe4f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -121,9 +121,9 @@ pipeline { } post { success { - writeFile file: 'packaging.properties', text: """## To be consumed by the packaging pipeline + writeFile(file: 'packaging.properties', text: """## To be consumed by the packaging pipeline COMMIT=${env.GIT_BASE_COMMIT} -VERSION=${BRANCH_NAME}-SNAPSHOT""" +VERSION=${BRANCH_NAME}-SNAPSHOT""") archiveArtifacts artifacts: 'packaging.properties' } always { From 2d00db547c3d9d331c4f78f72631999753dc03b3 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 21 Oct 2020 16:30:35 +0100 Subject: [PATCH 04/12] Fix post within a node --- .ci/packaging.groovy | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index a7237231d11..fbfa28e5785 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -178,15 +178,15 @@ pipeline { } } } - } - } - post { - success { - writeFile(file: 'beats-tester.properties', text: """## To be consumed by the beats-tester pipeline -COMMIT=${env.GIT_BASE_COMMIT} -BEATS_URL_BASE=https://storage.googleapis.com/beats-ci-artifacts/commits/${env.GIT_BASE_COMMIT} -VERSION=${env.JOB_BASE_NAME}-SNAPSHOT""") - archiveArtifacts artifacts: 'beats-tester.properties' + post { + success { + writeFile(file: 'beats-tester.properties', text: """## To be consumed by the beats-tester pipeline + COMMIT=${env.GIT_BASE_COMMIT} + BEATS_URL_BASE=https://storage.googleapis.com/beats-ci-artifacts/commits/${env.GIT_BASE_COMMIT} + VERSION=${env.JOB_BASE_NAME}-SNAPSHOT""") + archiveArtifacts artifacts: 'beats-tester.properties' + } + } } } } From 41450329b368f1ebf52fb089f53efa23fca5984e Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 22 Oct 2020 09:14:58 +0100 Subject: [PATCH 05/12] Fix missing argument and fallback to default checkout --- .ci/beats-tester.groovy | 2 +- .ci/packaging.groovy | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.ci/beats-tester.groovy b/.ci/beats-tester.groovy index d1227f82be3..62a8c2d5756 100644 --- a/.ci/beats-tester.groovy +++ b/.ci/beats-tester.groovy @@ -102,7 +102,7 @@ def runBeatsTesterJob(Map args = [:]) { flatten: true, projectName: "Beats/packaging/${env.JOB_BASE_NAME}", selector: upstream(fallbackToLastSuccessful: true)) - def props = readProperties('beats-tester.properties') + def props = readProperties(file: 'beats-tester.properties') apm = props.get('APM_URL_BASE', '') beats = props.get('BEATS_URL_BASE', '') } diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index fbfa28e5785..17968995bf9 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -67,12 +67,17 @@ pipeline { deleteDir() script { if(isUpstreamTrigger()) { - copyArtifacts(filter: 'packaging.properties', - flatten: true, - projectName: "Beats/beats/${env.JOB_BASE_NAME}", - selector: upstream(fallbackToLastSuccessful: true)) - def props = readProperties('packaging.properties') - gitCheckout(basedir: "${BASE_DIR}", branch: props.COMMIT) + try { + copyArtifacts(filter: 'packaging.properties', + flatten: true, + projectName: "Beats/beats/${env.JOB_BASE_NAME}", + selector: upstream(fallbackToLastSuccessful: true)) + def props = readProperties(file: 'packaging.properties') + gitCheckout(basedir: "${BASE_DIR}", branch: props.COMMIT) + } catch(err) { + // Fallback to the head of the branch as used to be. + gitCheckout(basedir: "${BASE_DIR}") + } } else { gitCheckout(basedir: "${BASE_DIR}") } From ea2f8148cd219c3673f189734307e8a44da711db Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 22 Oct 2020 15:35:30 +0100 Subject: [PATCH 06/12] Support version --- .ci/beats-tester.groovy | 6 ++++-- .ci/packaging.groovy | 11 ++++++++--- Jenkinsfile | 5 ++++- Makefile | 5 +++++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.ci/beats-tester.groovy b/.ci/beats-tester.groovy index 62a8c2d5756..b29660b38f4 100644 --- a/.ci/beats-tester.groovy +++ b/.ci/beats-tester.groovy @@ -96,6 +96,7 @@ pipeline { def runBeatsTesterJob(Map args = [:]) { def apm = args.get('apm', '') def beats = args.get('beats', '') + def version = args.version if (isUpstreamTrigger()) { copyArtifacts(filter: 'beats-tester.properties', @@ -105,15 +106,16 @@ def runBeatsTesterJob(Map args = [:]) { def props = readProperties(file: 'beats-tester.properties') apm = props.get('APM_URL_BASE', '') beats = props.get('BEATS_URL_BASE', '') + version = props.get('VERSION', '8.0.0-SNAPSHOT') } if (apm?.trim() || beats?.trim()) { build(job: env.BEATS_TESTER_JOB, propagate: false, wait: false, parameters: [ string(name: 'APM_URL_BASE', value: apm), string(name: 'BEATS_URL_BASE', value: beats), - string(name: 'VERSION', value: args.version) + string(name: 'VERSION', value: version) ]) } else { - build(job: env.BEATS_TESTER_JOB, propagate: false, wait: false, parameters: [ string(name: 'VERSION', value: args.version) ]) + build(job: env.BEATS_TESTER_JOB, propagate: false, wait: false, parameters: [ string(name: 'VERSION', value: version) ]) } } \ No newline at end of file diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 17968995bf9..f296ba51003 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -83,6 +83,9 @@ pipeline { } } setEnvVar("GO_VERSION", readFile("${BASE_DIR}/.go-version").trim()) + dir("${BASE_DIR}"){ + setEnvVar('VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) + } stashV2(name: 'source', bucket: "${JOB_GCS_BUCKET_STASH}", credentialsId: "${JOB_GCS_CREDENTIALS}") } } @@ -142,7 +145,9 @@ pipeline { withGithubNotify(context: "Packaging Linux ${BEATS_FOLDER}") { deleteDir() release() - pushCIDockerImages() + dir("${BASE_DIR}") { + pushCIDockerImages() + } } prepareE2ETestForPackage("${BEATS_FOLDER}") } @@ -188,7 +193,7 @@ pipeline { writeFile(file: 'beats-tester.properties', text: """## To be consumed by the beats-tester pipeline COMMIT=${env.GIT_BASE_COMMIT} BEATS_URL_BASE=https://storage.googleapis.com/beats-ci-artifacts/commits/${env.GIT_BASE_COMMIT} - VERSION=${env.JOB_BASE_NAME}-SNAPSHOT""") + VERSION=${env.VERSION}-SNAPSHOT""") archiveArtifacts artifacts: 'beats-tester.properties' } } @@ -217,7 +222,7 @@ def pushCIDockerImages(){ } def tagAndPush(beatName){ - def libbetaVer = sh(label: 'Get libbeat version', script: 'grep defaultBeatVersion ${BASE_DIR}/libbeat/version/version.go|cut -d "=" -f 2|tr -d \\"', returnStdout: true)?.trim() + def libbetaVer = sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim() def aliasVersion = "" if("${env.SNAPSHOT}" == "true"){ aliasVersion = libbetaVer.substring(0, libbetaVer.lastIndexOf(".")) // remove third number in version diff --git a/Jenkinsfile b/Jenkinsfile index c7610edbe4f..8e45bd10046 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -121,9 +121,12 @@ pipeline { } post { success { + dir("${BASE_DIR}"){ + setEnvVar('VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) + } writeFile(file: 'packaging.properties', text: """## To be consumed by the packaging pipeline COMMIT=${env.GIT_BASE_COMMIT} -VERSION=${BRANCH_NAME}-SNAPSHOT""") +VERSION=${VERSION}-SNAPSHOT""") archiveArtifacts artifacts: 'packaging.properties' } always { diff --git a/Makefile b/Makefile index c21c0a7346e..6b1f9466e8a 100644 --- a/Makefile +++ b/Makefile @@ -176,6 +176,11 @@ python-env: test-apm: sh ./script/test_apm.sh +## get-version : Get the libbeat version +.PHONY: get-version +get-version: + @mage dumpVariables | grep 'beat_version' | cut -d"=" -f 2 | tr -d " " + ### Packaging targets #### ## snapshot : Builds a snapshot release. From 43b878dcd45e5e4471ec54dcfcc88f6051dba5f5 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Mon, 26 Oct 2020 13:03:07 +0000 Subject: [PATCH 07/12] Set env variable in the linting stage which already got the mage setup --- Jenkinsfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8e45bd10046..f36a3e50754 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -77,6 +77,7 @@ pipeline { withBeatsEnv(archive: false, id: 'lint') { dumpVariables() cmd(label: 'make check', script: 'make check') + setEnvVar('VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) } } } @@ -121,12 +122,9 @@ pipeline { } post { success { - dir("${BASE_DIR}"){ - setEnvVar('VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) - } writeFile(file: 'packaging.properties', text: """## To be consumed by the packaging pipeline COMMIT=${env.GIT_BASE_COMMIT} -VERSION=${VERSION}-SNAPSHOT""") +VERSION=${env.VERSION}-SNAPSHOT""") archiveArtifacts artifacts: 'packaging.properties' } always { From 87816f4b1c3f1484086812e4ede2d34ab6cf6537 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Mon, 26 Oct 2020 18:10:54 +0000 Subject: [PATCH 08/12] Configure the mage environment --- .ci/packaging.groovy | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 46b96e6d425..d297be139a7 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -83,8 +83,10 @@ pipeline { } } setEnvVar("GO_VERSION", readFile("${BASE_DIR}/.go-version").trim()) - dir("${BASE_DIR}"){ - setEnvVar('VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) + withMageEnv(){ + dir("${BASE_DIR}"){ + setEnvVar('VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) + } } stashV2(name: 'source', bucket: "${JOB_GCS_BUCKET_STASH}", credentialsId: "${JOB_GCS_CREDENTIALS}") } From 2d8d17d65f26c7da5d3896269f7cb79d6ec76079 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 27 Oct 2020 12:24:22 +0000 Subject: [PATCH 09/12] run once the get-version --- .ci/packaging.groovy | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index d297be139a7..bab609641ed 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -85,7 +85,7 @@ pipeline { setEnvVar("GO_VERSION", readFile("${BASE_DIR}/.go-version").trim()) withMageEnv(){ dir("${BASE_DIR}"){ - setEnvVar('VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) + setEnvVar('BEAT_VERSION', sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim()) } } stashV2(name: 'source', bucket: "${JOB_GCS_BUCKET_STASH}", credentialsId: "${JOB_GCS_CREDENTIALS}") @@ -192,10 +192,12 @@ pipeline { } post { success { - writeFile(file: 'beats-tester.properties', text: """## To be consumed by the beats-tester pipeline - COMMIT=${env.GIT_BASE_COMMIT} - BEATS_URL_BASE=https://storage.googleapis.com/beats-ci-artifacts/commits/${env.GIT_BASE_COMMIT} - VERSION=${env.VERSION}-SNAPSHOT""") + writeFile(file: 'beats-tester.properties', + text: """\ + ## To be consumed by the beats-tester pipeline + COMMIT=${env.GIT_BASE_COMMIT} + BEATS_URL_BASE=https://storage.googleapis.com/${env.JOB_GCS_BUCKET}/commits/${env.GIT_BASE_COMMIT} + VERSION=${env.BEAT_VERSION}-SNAPSHOT""".stripIndent()) // stripIdent() requires '''/ archiveArtifacts artifacts: 'beats-tester.properties' } } @@ -224,7 +226,7 @@ def pushCIDockerImages(){ } def tagAndPush(beatName){ - def libbetaVer = sh(label: 'Get beat version', script: 'make get-version', returnStdout: true)?.trim() + def libbetaVer = env.BEAT_VERSION def aliasVersion = "" if("${env.SNAPSHOT}" == "true"){ aliasVersion = libbetaVer.substring(0, libbetaVer.lastIndexOf(".")) // remove third number in version From 2da40268e1954012c93ed084e08ac435e21a6b61 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 28 Oct 2020 15:34:17 +0000 Subject: [PATCH 10/12] Update .ci/packaging.groovy --- .ci/packaging.groovy | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index bab609641ed..cd90224813e 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -147,9 +147,7 @@ pipeline { withGithubNotify(context: "Packaging Linux ${BEATS_FOLDER}") { deleteDir() release() - dir("${BASE_DIR}") { - pushCIDockerImages() - } + pushCIDockerImages() } prepareE2ETestForPackage("${BEATS_FOLDER}") } From 6e1ef082ff375cdad63fd8e9eb05dadd7520e4f8 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 28 Oct 2020 15:36:08 +0000 Subject: [PATCH 11/12] Fix condition --- .ci/beats-tester.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/beats-tester.groovy b/.ci/beats-tester.groovy index b29660b38f4..3650246e966 100644 --- a/.ci/beats-tester.groovy +++ b/.ci/beats-tester.groovy @@ -77,7 +77,7 @@ pipeline { options { skipDefaultCheckout() } when { not { - allOf { + anyOf { branch comparator: 'REGEXP', pattern: '(master|.*x)' changeRequest() } @@ -118,4 +118,4 @@ def runBeatsTesterJob(Map args = [:]) { } else { build(job: env.BEATS_TESTER_JOB, propagate: false, wait: false, parameters: [ string(name: 'VERSION', value: version) ]) } -} \ No newline at end of file +} From bffb2ff446c8ce2240578706ff137edc80369dfc Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 28 Oct 2020 19:30:13 +0000 Subject: [PATCH 12/12] Update .ci/packaging.groovy Co-authored-by: cachedout --- .ci/packaging.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 808480e7b5c..02adc1a06b8 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -378,7 +378,7 @@ def publishPackages(baseDir){ uploadPackages("${bucketUri}/${beatsFolderName}", baseDir) // Copy those files to another location with the sha commit to test them - // afterwords. + // afterward. bucketUri = "gs://${JOB_GCS_BUCKET}/commits/${env.GIT_BASE_COMMIT}" uploadPackages("${bucketUri}/${beatsFolderName}", baseDir) }