diff --git a/jenkins/release-workflows/release-tag.jenkinsfile b/jenkins/release-workflows/release-tag.jenkinsfile index 7f1cd14e84..215403d19f 100644 --- a/jenkins/release-workflows/release-tag.jenkinsfile +++ b/jenkins/release-workflows/release-tag.jenkinsfile @@ -30,35 +30,43 @@ pipeline { description: 'Version of the release.', trim: true ) - choice( - choices: ['opensearch', 'opensearch-dashboards'], - name: 'PRODUCT', - description: 'Product for tag creation.' - ) } environment { - DISTRIBUTION_MANIFEST = "$PRODUCT-$VERSION/manifest.yml" + OS_DISTRIBUTION_MANIFEST = "opensearch-$VERSION/manifest.yml" + OSD_DISTRIBUTION_MANIFEST = "opensearch-dashboards-$VERSION/manifest.yml" } stages { - stage('Create Release Tag') { + stage('Create Release Tag for OpenSearch components') { steps { script { - release_url = "https://artifacts.opensearch.org/releases/bundle/$PRODUCT/$VERSION/$PRODUCT-$VERSION-linux-x64.tar.gz" - sh "curl -SLO $release_url && tar -xf $PRODUCT-$VERSION-linux-x64.tar.gz $PRODUCT-$VERSION/manifest.yml" - echo "The release distribution manifest is downloaded to $DISTRIBUTION_MANIFEST" + os_artifact_url = "https://artifacts.opensearch.org/releases/bundle/opensearch/$VERSION/opensearch-$VERSION-linux-x64.tar.gz" + sh "curl -SLO $os_artifact_url && tar -xf opensearch-$VERSION-linux-x64.tar.gz ${OS_DISTRIBUTION_MANIFEST}" + echo "The release distribution manifest is downloaded to $OS_DISTRIBUTION_MANIFEST" createReleaseTag( - distManifest: "$DISTRIBUTION_MANIFEST", + distManifest: "$OS_DISTRIBUTION_MANIFEST", + tagVersion: VERSION + ) + } + } + } + stage('Create Release Tag for OpenSearch-Dasboards components') { + steps { + script { + osd_artifact_url = "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/$VERSION/opensearch-dashboards-$VERSION-linux-x64.tar.gz" + sh "curl -SLO $osd_artifact_url && tar -xf opensearch-dashboards-$VERSION-linux-x64.tar.gz ${OSD_DISTRIBUTION_MANIFEST}" + echo "The release distribution manifest is downloaded to $OSD_DISTRIBUTION_MANIFEST" + createReleaseTag( + distManifest: "$OSD_DISTRIBUTION_MANIFEST", tagVersion: VERSION ) - } } } - stage('Update Manifest') { + stage('Lock Manifests to tags') { steps { echo 'Triggering manifest lock workflow' build job: 'release-manifest-commit-lock', wait: true, parameters: [ - string(name: 'RELEASE_VERSION', value: "${params.RELEASE_VERSION}"), + string(name: 'RELEASE_VERSION', value: "${params.VERSION}"), string(name: 'MANIFEST_LOCK_ACTION', value: "UPDATE_TO_TAGS") ] echo 'Pull Request to lock manifest created successfully!' diff --git a/tests/jenkins/TestReleaseTagJob.groovy b/tests/jenkins/TestReleaseTagJob.groovy new file mode 100644 index 0000000000..39636ad313 --- /dev/null +++ b/tests/jenkins/TestReleaseTagJob.groovy @@ -0,0 +1,98 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ +import jenkins.tests.BuildPipelineTest +import org.junit.Before +import org.junit.Test +import static com.lesfurets.jenkins.unit.global.lib.LibraryConfiguration.library +import static com.lesfurets.jenkins.unit.global.lib.GitSource.gitSource +import static com.lesfurets.jenkins.unit.MethodCall.callArgsToString +import static org.assertj.core.api.Assertions.assertThat +import static org.hamcrest.CoreMatchers.hasItem +import static org.hamcrest.CoreMatchers.hasItems +import org.yaml.snakeyaml.Yaml + + +class TestReleaseTag extends BuildPipelineTest { + + @Override + @Before + void setUp() { + String releaseVersion = '2.16.0' + + helper.registerSharedLibrary( + library().name('jenkins') + .defaultVersion('1.0.4') + .allowOverride(true) + .implicit(true) + .targetPath('vars') + .retriever(gitSource('https://github.com/opensearch-project/opensearch-build-libraries.git')) + .build() + ) + super.setUp() + addParam('VERSION', releaseVersion) + binding.setVariable('GITHUB_BOT_TOKEN_NAME', 'github_bot_token_name') + binding.setVariable('env', [ + 'VERSION': releaseVersion, + 'OS_DISTRIBUTION_MANIFEST': 'opensearch-2.16.0/manifest.yml', + 'OSD_DISTRIBUTION_MANIFEST': 'opensearch-dashboards-2.16.0/manifest.yml' + ]) + helper.registerAllowedMethod('readYaml', [Map.class], { args -> + if (args.file == 'opensearch-2.16.0/manifest.yml') { + return new Yaml().load(('tests/jenkins/data/opensearch-dist-2.16.0.yml' as File).text) + } else if (args.file == 'opensearch-dashboards-2.16.0/manifest.yml') { + return new Yaml().load(('tests/jenkins/data/opensearch-dashboards-dist-2.16.0.yml' as File).text) + } + }) + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/security.git 2.16.0.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: '30760168263404e628a25fd13a54100d2610810c', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/job-scheduler.git 2.16.0.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: 'b36f79336db82fd45db5665a5ac2e9368f0a1cdf', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/k-NN.git 2.16.0.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: 'c8ec49f1e2c9603498ca679727a499dc0b296e26', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/common-utils.git 2.16.0.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: 'cbc06a5eafe0009edbb2c865d7cd30262d04e502', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/OpenSearch.git 2.16.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: 'f84a26e76807ea67a69822c37b1a1d89e7177d9b', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/dashboards-visualizations.git 2.16.0.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: '5e86965658791648fad9d0fc573e470c59cce674', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/OpenSearch-Dashboards.git 2.16.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: '4b8826e7ffa6562825ca8aad676a8d89983c2d70', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/opensearch-dashboards-functional-test.git 2.16.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: '7c5e0482b844828cf2aec3b63841bd5d336d5668', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/dashboards-reporting.git 2.16.0.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: '49057e4f82b0390dc28d0e08009ec5f892d7af1a', exitValue: 0] + } + helper.addShMock("git ls-remote --tags https://github.com/opensearch-project/dashboards-observability.git 2.16.0.0 | awk 'NR==1{print \$1}'") { script -> + return [stdout: '24d368e882ec01ff98e556725b84e332d4ab825e', exitValue: 0] + } + } + @Test + public void checkTagCreation() { + super.testPipeline("jenkins/release-workflows/release-tag.jenkinsfile", + "tests/jenkins/jenkinsjob-regression-files/release-workflows/release-tag.jenkinsfile") + assertJobStatusSuccess() + } + + @Test + public void testManifestLock(){ + runScript('jenkins/release-workflows/release-tag.jenkinsfile') + assertCallStack().contains('release-tag.stage(Lock Manifests to tags, groovy.lang.Closure', + 'release-tag.string({name=RELEASE_VERSION, value=2.16.0})', + 'release-tag.string({name=MANIFEST_LOCK_ACTION, value=UPDATE_TO_TAGS})', + 'release-tag.build({job=release-manifest-commit-lock, wait=true, parameters=[null, null]})') + } +} \ No newline at end of file diff --git a/tests/jenkins/data/opensearch-dashboards-dist-2.16.0.yml b/tests/jenkins/data/opensearch-dashboards-dist-2.16.0.yml new file mode 100644 index 0000000000..168d6c384d --- /dev/null +++ b/tests/jenkins/data/opensearch-dashboards-dist-2.16.0.yml @@ -0,0 +1,35 @@ +--- +schema-version: '1.1' +build: + name: OpenSearch Dashboards + version: 2.16.0 + platform: linux + architecture: x64 + distribution: tar + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch-dashboards/2.16.0/7858/linux/x64/tar/dist/opensearch-dashboards/opensearch-dashboards-2.16.0-linux-x64.tar.gz + id: '7858' +components: + - name: OpenSearch-Dashboards + repository: https://github.com/opensearch-project/OpenSearch-Dashboards.git + ref: 4b8826e7ffa6562825ca8aad676a8d89983c2d70 + commit_id: 4b8826e7ffa6562825ca8aad676a8d89983c2d70 + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch-dashboards/2.16.0/7858/linux/x64/tar/builds/opensearch-dashboards/dist/opensearch-dashboards-min-2.16.0-linux-x64.tar.gz + - name: functionalTestDashboards + repository: https://github.com/opensearch-project/opensearch-dashboards-functional-test.git + ref: '2.16' + commit_id: 7c5e0482b844828cf2aec3b63841bd5d336d5668 + - name: observabilityDashboards + repository: https://github.com/opensearch-project/dashboards-observability.git + ref: 24d368e882ec01ff98e556725b84e332d4ab825e + commit_id: 24d368e882ec01ff98e556725b84e332d4ab825e + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch-dashboards/2.16.0/7858/linux/x64/tar/builds/opensearch-dashboards/plugins/observabilityDashboards-2.16.0.zip + - name: reportsDashboards + repository: https://github.com/opensearch-project/dashboards-reporting.git + ref: 49057e4f82b0390dc28d0e08009ec5f892d7af1a + commit_id: 49057e4f82b0390dc28d0e08009ec5f892d7af1a + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch-dashboards/2.16.0/7858/linux/x64/tar/builds/opensearch-dashboards/plugins/reportsDashboards-2.16.0.zip + - name: ganttChartDashboards + repository: https://github.com/opensearch-project/dashboards-visualizations.git + ref: 5e86965658791648fad9d0fc573e470c59cce674 + commit_id: 5e86965658791648fad9d0fc573e470c59cce674 + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch-dashboards/2.16.0/7858/linux/x64/tar/builds/opensearch-dashboards/plugins/ganttChartDashboards-2.16.0.zip diff --git a/tests/jenkins/data/opensearch-dist-2.16.0.yml b/tests/jenkins/data/opensearch-dist-2.16.0.yml new file mode 100644 index 0000000000..42140907be --- /dev/null +++ b/tests/jenkins/data/opensearch-dist-2.16.0.yml @@ -0,0 +1,35 @@ +--- +schema-version: '1.1' +build: + name: OpenSearch + version: 2.16.0 + platform: linux + architecture: x64 + distribution: tar + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/2.16.0/10154/linux/x64/tar/dist/opensearch/opensearch-2.16.0-linux-x64.tar.gz + id: '10154' +components: + - name: OpenSearch + repository: https://github.com/opensearch-project/OpenSearch.git + ref: f84a26e76807ea67a69822c37b1a1d89e7177d9b + commit_id: f84a26e76807ea67a69822c37b1a1d89e7177d9b + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/2.16.0/10154/linux/x64/tar/builds/opensearch/dist/opensearch-min-2.16.0-linux-x64.tar.gz + - name: common-utils + repository: https://github.com/opensearch-project/common-utils.git + ref: cbc06a5eafe0009edbb2c865d7cd30262d04e502 + commit_id: cbc06a5eafe0009edbb2c865d7cd30262d04e502 + - name: job-scheduler + repository: https://github.com/opensearch-project/job-scheduler.git + ref: b36f79336db82fd45db5665a5ac2e9368f0a1cdf + commit_id: b36f79336db82fd45db5665a5ac2e9368f0a1cdf + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/2.16.0/10154/linux/x64/tar/builds/opensearch/plugins/opensearch-job-scheduler-2.16.0.0.zip + - name: security + repository: https://github.com/opensearch-project/security.git + ref: 30760168263404e628a25fd13a54100d2610810c + commit_id: 30760168263404e628a25fd13a54100d2610810c + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/2.16.0/10154/linux/x64/tar/builds/opensearch/plugins/opensearch-security-2.16.0.0.zip + - name: k-NN + repository: https://github.com/opensearch-project/k-NN.git + ref: c8ec49f1e2c9603498ca679727a499dc0b296e26 + commit_id: c8ec49f1e2c9603498ca679727a499dc0b296e26 + location: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/2.16.0/10154/linux/x64/tar/builds/opensearch/plugins/opensearch-knn-2.16.0.0.zip diff --git a/tests/jenkins/jenkinsjob-regression-files/release-workflows/release-tag.jenkinsfile.txt b/tests/jenkins/jenkinsjob-regression-files/release-workflows/release-tag.jenkinsfile.txt new file mode 100644 index 0000000000..980e3d986a --- /dev/null +++ b/tests/jenkins/jenkinsjob-regression-files/release-workflows/release-tag.jenkinsfile.txt @@ -0,0 +1,111 @@ + release-tag.run() + release-tag.modernSCM({$class=GitSCMSource, remote=https://github.com/opensearch-project/opensearch-build-libraries.git}) + release-tag.library({identifier=jenkins@1.0.4, retriever=null}) + release-tag.pipeline(groovy.lang.Closure) + release-tag.timeout({time=2, unit=HOURS}) + release-tag.echo(Executing on agent [docker:[alwaysPull:true, args:, containerPerStageRoot:false, label:Jenkins-Agent-AL2023-X64-C54xlarge-Docker-Host, image:opensearchstaging/ci-runner:ci-runner-centos7-opensearch-build-v3, reuseNode:false, registryUrl:https://public.ecr.aws/, stages:[:]]]) + release-tag.stage(Create Release Tag for OpenSearch components, groovy.lang.Closure) + release-tag.script(groovy.lang.Closure) + release-tag.sh(curl -SLO https://artifacts.opensearch.org/releases/bundle/opensearch/2.16.0/opensearch-2.16.0-linux-x64.tar.gz && tar -xf opensearch-2.16.0-linux-x64.tar.gz opensearch-2.16.0/manifest.yml) + release-tag.echo(The release distribution manifest is downloaded to opensearch-2.16.0/manifest.yml) + release-tag.createReleaseTag({distManifest=opensearch-2.16.0/manifest.yml, tagVersion=2.16.0}) + createReleaseTag.legacySCM(groovy.lang.Closure) + createReleaseTag.library({identifier=jenkins@1.0.4, retriever=null}) + createReleaseTag.readYaml({file=opensearch-2.16.0/manifest.yml}) + BundleManifest.asBoolean() + BundleManifest.getNames() + createReleaseTag.echo(Creating 2.16.0 release tag for 5 components in the manifest) + createReleaseTag.usernamePassword({credentialsId=github_bot_token_name, usernameVariable=GITHUB_USER, passwordVariable=GITHUB_TOKEN}) + createReleaseTag.withCredentials([[GITHUB_USER, GITHUB_TOKEN]], groovy.lang.Closure) + BundleManifest.getCommitId(security) + BundleManifest.getRepo(security) + createReleaseTag.echo(Tagging security at 30760168263404e628a25fd13a54100d2610810c ...) + createReleaseTag.dir(security, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=30760168263404e628a25fd13a54100d2610810c}], userRemoteConfigs=[{url=https://github.com/opensearch-project/security.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/security.git 2.16.0.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0.0 has been created with identical commit ID. Skipping creating new tag for security.) + BundleManifest.getCommitId(job-scheduler) + BundleManifest.getRepo(job-scheduler) + createReleaseTag.echo(Tagging job-scheduler at b36f79336db82fd45db5665a5ac2e9368f0a1cdf ...) + createReleaseTag.dir(job-scheduler, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=b36f79336db82fd45db5665a5ac2e9368f0a1cdf}], userRemoteConfigs=[{url=https://github.com/opensearch-project/job-scheduler.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/job-scheduler.git 2.16.0.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0.0 has been created with identical commit ID. Skipping creating new tag for job-scheduler.) + BundleManifest.getCommitId(k-NN) + BundleManifest.getRepo(k-NN) + createReleaseTag.echo(Tagging k-NN at c8ec49f1e2c9603498ca679727a499dc0b296e26 ...) + createReleaseTag.dir(k-NN, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=c8ec49f1e2c9603498ca679727a499dc0b296e26}], userRemoteConfigs=[{url=https://github.com/opensearch-project/k-NN.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/k-NN.git 2.16.0.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0.0 has been created with identical commit ID. Skipping creating new tag for k-NN.) + BundleManifest.getCommitId(common-utils) + BundleManifest.getRepo(common-utils) + createReleaseTag.echo(Tagging common-utils at cbc06a5eafe0009edbb2c865d7cd30262d04e502 ...) + createReleaseTag.dir(common-utils, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=cbc06a5eafe0009edbb2c865d7cd30262d04e502}], userRemoteConfigs=[{url=https://github.com/opensearch-project/common-utils.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/common-utils.git 2.16.0.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0.0 has been created with identical commit ID. Skipping creating new tag for common-utils.) + BundleManifest.getCommitId(OpenSearch) + BundleManifest.getRepo(OpenSearch) + createReleaseTag.echo(Tagging OpenSearch at f84a26e76807ea67a69822c37b1a1d89e7177d9b ...) + createReleaseTag.dir(OpenSearch, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=f84a26e76807ea67a69822c37b1a1d89e7177d9b}], userRemoteConfigs=[{url=https://github.com/opensearch-project/OpenSearch.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/OpenSearch.git 2.16.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0 has been created with identical commit ID. Skipping creating new tag for OpenSearch.) + release-tag.stage(Create Release Tag for OpenSearch-Dasboards components, groovy.lang.Closure) + release-tag.script(groovy.lang.Closure) + release-tag.sh(curl -SLO https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.16.0/opensearch-dashboards-2.16.0-linux-x64.tar.gz && tar -xf opensearch-dashboards-2.16.0-linux-x64.tar.gz opensearch-dashboards-2.16.0/manifest.yml) + release-tag.echo(The release distribution manifest is downloaded to opensearch-dashboards-2.16.0/manifest.yml) + release-tag.createReleaseTag({distManifest=opensearch-dashboards-2.16.0/manifest.yml, tagVersion=2.16.0}) + createReleaseTag.legacySCM(groovy.lang.Closure) + createReleaseTag.library({identifier=jenkins@1.0.4, retriever=null}) + createReleaseTag.readYaml({file=opensearch-dashboards-2.16.0/manifest.yml}) + BundleManifest.asBoolean() + BundleManifest.getNames() + createReleaseTag.echo(Creating 2.16.0 release tag for 5 components in the manifest) + createReleaseTag.usernamePassword({credentialsId=github_bot_token_name, usernameVariable=GITHUB_USER, passwordVariable=GITHUB_TOKEN}) + createReleaseTag.withCredentials([[GITHUB_USER, GITHUB_TOKEN]], groovy.lang.Closure) + BundleManifest.getCommitId(ganttChartDashboards) + BundleManifest.getRepo(ganttChartDashboards) + createReleaseTag.echo(Tagging ganttChartDashboards at 5e86965658791648fad9d0fc573e470c59cce674 ...) + createReleaseTag.dir(ganttChartDashboards, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=5e86965658791648fad9d0fc573e470c59cce674}], userRemoteConfigs=[{url=https://github.com/opensearch-project/dashboards-visualizations.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/dashboards-visualizations.git 2.16.0.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0.0 has been created with identical commit ID. Skipping creating new tag for ganttChartDashboards.) + BundleManifest.getCommitId(OpenSearch-Dashboards) + BundleManifest.getRepo(OpenSearch-Dashboards) + createReleaseTag.echo(Tagging OpenSearch-Dashboards at 4b8826e7ffa6562825ca8aad676a8d89983c2d70 ...) + createReleaseTag.dir(OpenSearch-Dashboards, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=4b8826e7ffa6562825ca8aad676a8d89983c2d70}], userRemoteConfigs=[{url=https://github.com/opensearch-project/OpenSearch-Dashboards.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/OpenSearch-Dashboards.git 2.16.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0 has been created with identical commit ID. Skipping creating new tag for OpenSearch-Dashboards.) + BundleManifest.getCommitId(functionalTestDashboards) + BundleManifest.getRepo(functionalTestDashboards) + createReleaseTag.echo(Tagging functionalTestDashboards at 7c5e0482b844828cf2aec3b63841bd5d336d5668 ...) + createReleaseTag.dir(functionalTestDashboards, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=7c5e0482b844828cf2aec3b63841bd5d336d5668}], userRemoteConfigs=[{url=https://github.com/opensearch-project/opensearch-dashboards-functional-test.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/opensearch-dashboards-functional-test.git 2.16.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0 has been created with identical commit ID. Skipping creating new tag for functionalTestDashboards.) + BundleManifest.getCommitId(reportsDashboards) + BundleManifest.getRepo(reportsDashboards) + createReleaseTag.echo(Tagging reportsDashboards at 49057e4f82b0390dc28d0e08009ec5f892d7af1a ...) + createReleaseTag.dir(reportsDashboards, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=49057e4f82b0390dc28d0e08009ec5f892d7af1a}], userRemoteConfigs=[{url=https://github.com/opensearch-project/dashboards-reporting.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/dashboards-reporting.git 2.16.0.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0.0 has been created with identical commit ID. Skipping creating new tag for reportsDashboards.) + BundleManifest.getCommitId(observabilityDashboards) + BundleManifest.getRepo(observabilityDashboards) + createReleaseTag.echo(Tagging observabilityDashboards at 24d368e882ec01ff98e556725b84e332d4ab825e ...) + createReleaseTag.dir(observabilityDashboards, groovy.lang.Closure) + createReleaseTag.checkout({$class=GitSCM, branches=[{name=24d368e882ec01ff98e556725b84e332d4ab825e}], userRemoteConfigs=[{url=https://github.com/opensearch-project/dashboards-observability.git}]}) + createReleaseTag.sh({script=git ls-remote --tags https://github.com/opensearch-project/dashboards-observability.git 2.16.0.0 | awk 'NR==1{print $1}', returnStdout=true}) + createReleaseTag.echo(Tag 2.16.0.0 has been created with identical commit ID. Skipping creating new tag for observabilityDashboards.) + release-tag.stage(Lock Manifests to tags, groovy.lang.Closure) + release-tag.echo(Triggering manifest lock workflow) + release-tag.string({name=RELEASE_VERSION, value=2.16.0}) + release-tag.string({name=MANIFEST_LOCK_ACTION, value=UPDATE_TO_TAGS}) + release-tag.build({job=release-manifest-commit-lock, wait=true, parameters=[null, null]}) + release-tag.echo(Pull Request to lock manifest created successfully!) + release-tag.script(groovy.lang.Closure) + release-tag.postCleanup() + postCleanup.cleanWs({disableDeferredWipeout=true, deleteDirs=true})