From 0ae88db7527d23c3c4c3ed14c3dca9144aea1674 Mon Sep 17 00:00:00 2001 From: Ruhanga Date: Thu, 5 Jun 2025 16:06:04 +0000 Subject: [PATCH 1/6] ADDR-139: Added support for Bamboo Specs. --- bamboo-specs/bamboo.yml | 257 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 bamboo-specs/bamboo.yml diff --git a/bamboo-specs/bamboo.yml b/bamboo-specs/bamboo.yml new file mode 100644 index 0000000..045ff4e --- /dev/null +++ b/bamboo-specs/bamboo.yml @@ -0,0 +1,257 @@ +--- +version: 2 +plan: + project-key: ADDRHIER + key: AHML + name: Address Hierarchy Module Latest +stages: +- Build and Test: + manual: false + final: false + jobs: + - Build and Test JDK 21 + - Build and Test JDK 11 +- Deploy: + manual: false + final: false + jobs: + - Deploy to Maven +- Release: + manual: true + final: false + jobs: + - Release to maven +Build and Test JDK 21: + key: JOB1 + tasks: + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' + description: Resolve file permissions + - checkout: + force-clean-build: 'true' + description: Checkout default repository + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE="maven:3.9.9-eclipse-temurin-21" + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn clean package && chmod -R 777 .' + description: Build and test + artifact-subscriptions: [] +Build and Test JDK 11: + key: BTJ11 + tasks: + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' + description: Resolve file permissions + - checkout: + force-clean-build: 'true' + description: Checkout default repository + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE="maven:3.9.9-eclipse-temurin-11" + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn clean package && chmod -R 777 .' + description: Build and test + artifact-subscriptions: [] +Deploy to Maven: + key: DTM + tasks: + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' + description: Resolve file permissions + - checkout: + force-clean-build: 'true' + description: Checkout default repository + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ~/.m2/settings.xml:/.m2/settings.xml:ro -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn deploy -DskipTests --settings /.m2/settings.xml' + description: Deploy + artifact-subscriptions: [] +Release to maven: + key: RTM + tasks: + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' + description: Temporarily resolve file permissions + - checkout: + force-clean-build: 'true' + description: Checkout default repository + - checkout: + repository: Release scripts + path: release-scripts + force-clean-build: 'true' + description: Checkout default repository + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run \ + -v m2-repo:/root/.m2/repository \ + -v ~/.m2/settings.xml:/root/.m2/settings.xml:ro \ + -v ${PWD}:/module \ + -v ~/.ssh/github:/root/.ssh:ro \ + -e GIT_USER_NAME=$GIT_USER_NAME \ + -e GIT_USER_EMAIL=$GIT_USER_EMAIL \ + -e GIT_SSH_COMMAND='ssh -i /root/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \ + --rm \ + -w='/module' \ + ${IMAGE} \ + bash -c ' + yum -y install git && + yum clean all && + git config --global user.email "$GIT_USER_EMAIL" && + git config --global user.name "$GIT_USER_NAME" && + git config --global --add safe.directory /module && + ./release-scripts/release-prepare-perform.sh \ + -r ${bamboo.maven.release.version} \ + -d ${bamboo.maven.development.version} \ + -e ${bamboo.planRepository.repositoryUrl} + ' + environment: GIT_USER_NAME=${bamboo.git.user.name} GIT_USER_EMAIL=${bamboo.git.user.email} + description: Release prepare perform + - any-task: + plugin-key: com.atlassian.bamboo.plugins.variable.updater.variable-updater-generic:variable-extractor + configuration: + variable: maven.release.version + removeSnapshot: 'true' + variableScope: PLAN + description: Save next release version + - any-task: + plugin-key: com.atlassian.bamboo.plugins.variable.updater.variable-updater-generic:variable-extractor + configuration: + variable: maven.development.version + variableScope: JOB + description: Retrieve next snaphot version + artifact-subscriptions: [] +variables: + build.docker.image.id: maven:3.9.9-amazoncorretto-21 + maven.development.version: 3.1.0-SNAPSHOT + maven.release.version: 3.0.0 +repositories: +- Git: + type: git + url: https://github.com/openmrs/openmrs-module-addresshierarchy.git + branch: master + command-timeout-minutes: '180' + lfs: 'false' + verbose-logs: 'true' + use-shallow-clones: 'false' + cache-on-agents: 'false' + submodules: 'false' + ssh-key-applies-to-submodules: 'false' + fetch-all: 'false' +- Release scripts: + scope: global +triggers: +- polling: + period: '180' + repositories: + - Git +branches: + create: manually + delete: never + link-to-jira: true +notifications: +- events: + - job-failed + recipients: + - committers + - emails: + - dev-refapp@openmrs.org +labels: +- refapp +dependencies: + require-all-stages-passing: false + enabled-for-branches: true + block-strategy: none + plans: [] +other: + concurrent-build-plugin: system-default +--- +version: 2 +plan: + key: ADDRHIER-AHML +plan-permissions: +- roles: + - anonymous + permissions: + - view +... From 0571d454f391c41dd538875fdb15dff9b491c4d0 Mon Sep 17 00:00:00 2001 From: Ruhanga Date: Fri, 6 Jun 2025 09:50:31 +0000 Subject: [PATCH 2/6] ADDR-139: Fix random test failures on Amazon Corretto images --- .../addresshierarchy/AddressHierarchyActivatorTest.java | 9 ++++++++- bamboo-specs/bamboo.yml | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java b/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java index 419ce38..c61216b 100644 --- a/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java +++ b/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java @@ -11,6 +11,7 @@ import org.openmrs.module.addresshierarchy.service.AddressHierarchyService; import org.openmrs.test.BaseModuleContextSensitiveTest; import org.openmrs.test.Verifies; +import org.openmrs.test.SkipBaseSetup; import org.openmrs.util.OpenmrsConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; @@ -22,6 +23,7 @@ import java.util.Properties; import java.util.Set; +@SkipBaseSetup @DirtiesContext public class AddressHierarchyActivatorTest extends BaseModuleContextSensitiveTest { @@ -31,7 +33,12 @@ public class AddressHierarchyActivatorTest extends BaseModuleContextSensitiveTes private AddressHierarchyActivator activator; @Before - public void setup() { + public void setup() throws Exception { + + initializeInMemoryDatabase(); + executeDataSet(INITIAL_XML_DATASET_PACKAGE_PATH); + executeDataSet(EXAMPLE_XML_DATASET_PACKAGE_PATH); + authenticate(); Context.getAdministrationService().saveGlobalProperty(new GlobalProperty(AddressHierarchyConstants.GLOBAL_PROP_INITIALIZE_ADDRESS_HIERARCHY_CACHE_ON_STARTUP, "true")); diff --git a/bamboo-specs/bamboo.yml b/bamboo-specs/bamboo.yml index 045ff4e..44d9c86 100644 --- a/bamboo-specs/bamboo.yml +++ b/bamboo-specs/bamboo.yml @@ -49,7 +49,7 @@ Build and Test JDK 21: set -x - export IMAGE="maven:3.9.9-eclipse-temurin-21" + export IMAGE="maven:3.9.9-amazoncorretto-21" docker pull ${IMAGE} @@ -84,7 +84,7 @@ Build and Test JDK 11: set -x - export IMAGE="maven:3.9.9-eclipse-temurin-11" + export IMAGE="maven:3.9.9-amazoncorretto-11" docker pull ${IMAGE} From d292ae0143b6da305816607b35b802d8e7e2e97d Mon Sep 17 00:00:00 2001 From: Ruhanga Date: Mon, 9 Jun 2025 07:56:14 +0000 Subject: [PATCH 3/6] ADDR-139: Remove non Bamboo Specs specific logic. --- .../addresshierarchy/AddressHierarchyActivatorTest.java | 9 +-------- bamboo-specs/bamboo.yml | 4 ++-- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java b/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java index c61216b..419ce38 100644 --- a/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java +++ b/api/src/test/java/org/openmrs/module/addresshierarchy/AddressHierarchyActivatorTest.java @@ -11,7 +11,6 @@ import org.openmrs.module.addresshierarchy.service.AddressHierarchyService; import org.openmrs.test.BaseModuleContextSensitiveTest; import org.openmrs.test.Verifies; -import org.openmrs.test.SkipBaseSetup; import org.openmrs.util.OpenmrsConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; @@ -23,7 +22,6 @@ import java.util.Properties; import java.util.Set; -@SkipBaseSetup @DirtiesContext public class AddressHierarchyActivatorTest extends BaseModuleContextSensitiveTest { @@ -33,12 +31,7 @@ public class AddressHierarchyActivatorTest extends BaseModuleContextSensitiveTes private AddressHierarchyActivator activator; @Before - public void setup() throws Exception { - - initializeInMemoryDatabase(); - executeDataSet(INITIAL_XML_DATASET_PACKAGE_PATH); - executeDataSet(EXAMPLE_XML_DATASET_PACKAGE_PATH); - authenticate(); + public void setup() { Context.getAdministrationService().saveGlobalProperty(new GlobalProperty(AddressHierarchyConstants.GLOBAL_PROP_INITIALIZE_ADDRESS_HIERARCHY_CACHE_ON_STARTUP, "true")); diff --git a/bamboo-specs/bamboo.yml b/bamboo-specs/bamboo.yml index 44d9c86..045ff4e 100644 --- a/bamboo-specs/bamboo.yml +++ b/bamboo-specs/bamboo.yml @@ -49,7 +49,7 @@ Build and Test JDK 21: set -x - export IMAGE="maven:3.9.9-amazoncorretto-21" + export IMAGE="maven:3.9.9-eclipse-temurin-21" docker pull ${IMAGE} @@ -84,7 +84,7 @@ Build and Test JDK 11: set -x - export IMAGE="maven:3.9.9-amazoncorretto-11" + export IMAGE="maven:3.9.9-eclipse-temurin-11" docker pull ${IMAGE} From 724fe35e00b71984418369851f98a5a26348076b Mon Sep 17 00:00:00 2001 From: Ruhanga Date: Mon, 9 Jun 2025 08:09:47 +0000 Subject: [PATCH 4/6] ADDR-139: Added support for Java 24 to Bamboo Specs. --- bamboo-specs/bamboo.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/bamboo-specs/bamboo.yml b/bamboo-specs/bamboo.yml index 045ff4e..ae7f93a 100644 --- a/bamboo-specs/bamboo.yml +++ b/bamboo-specs/bamboo.yml @@ -10,6 +10,7 @@ stages: final: false jobs: - Build and Test JDK 21 + - Build and Test JDK 24 - Build and Test JDK 11 - Deploy: manual: false @@ -53,6 +54,41 @@ Build and Test JDK 21: docker pull ${IMAGE} + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn clean package && chmod -R 777 .' + description: Build and test + artifact-subscriptions: [] +Build and Test JDK 24: + key: BTJ24 + tasks: + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' + description: Resolve file permissions + - checkout: + force-clean-build: 'true' + description: Checkout default repository + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE="maven:3.9.9-amazoncorretto-24" + + docker pull ${IMAGE} + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn clean package && chmod -R 777 .' description: Build and test artifact-subscriptions: [] From bbb302e39e8b7cbab0dd2ced5faca13e70a4aa1f Mon Sep 17 00:00:00 2001 From: Ruhanga Date: Mon, 9 Jun 2025 12:58:54 +0000 Subject: [PATCH 5/6] ADDR-139: Added support for Java 8 and 17 to Bamboo Specs. --- bamboo-specs/bamboo.yml | 72 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/bamboo-specs/bamboo.yml b/bamboo-specs/bamboo.yml index ae7f93a..091c023 100644 --- a/bamboo-specs/bamboo.yml +++ b/bamboo-specs/bamboo.yml @@ -9,9 +9,11 @@ stages: manual: false final: false jobs: + - Build and Test JDK 17 - Build and Test JDK 21 - Build and Test JDK 24 - Build and Test JDK 11 + - Build and Test JDK 8 - Deploy: manual: false final: false @@ -22,6 +24,41 @@ stages: final: false jobs: - Release to maven +Build and Test JDK 17: + key: BTJ17 + tasks: + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' + description: Resolve file permissions + - checkout: + force-clean-build: 'true' + description: Checkout default repository + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE="maven:3.9.9-amazoncorretto-17" + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn clean package && chmod -R 777 .' + description: Build and test + artifact-subscriptions: [] Build and Test JDK 21: key: JOB1 tasks: @@ -124,6 +161,41 @@ Build and Test JDK 11: docker pull ${IMAGE} + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn clean package && chmod -R 777 .' + description: Build and test + artifact-subscriptions: [] +Build and Test JDK 8: + key: BTJ8 + tasks: + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE=${bamboo.build.docker.image.id} + + docker pull ${IMAGE} + + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' + description: Resolve file permissions + - checkout: + force-clean-build: 'true' + description: Checkout default repository + - script: + interpreter: SHELL + scripts: + - |- + #!/bin/bash -eu + + set -x + + export IMAGE="maven:3.9.9-amazoncorretto-8" + + docker pull ${IMAGE} + docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'mvn clean package && chmod -R 777 .' description: Build and test artifact-subscriptions: [] From 90e998c786cc1dc777c62f31cc3e590eba292591 Mon Sep 17 00:00:00 2001 From: Ruhanga Date: Tue, 10 Jun 2025 16:06:05 +0000 Subject: [PATCH 6/6] ADDR-139: Disable forced clean builds and remove permissions resolution tasks --- bamboo-specs/bamboo.yml | 114 +++------------------------------------- 1 file changed, 8 insertions(+), 106 deletions(-) diff --git a/bamboo-specs/bamboo.yml b/bamboo-specs/bamboo.yml index 091c023..4af042c 100644 --- a/bamboo-specs/bamboo.yml +++ b/bamboo-specs/bamboo.yml @@ -27,22 +27,8 @@ stages: Build and Test JDK 17: key: BTJ17 tasks: - - script: - interpreter: SHELL - scripts: - - |- - #!/bin/bash -eu - - set -x - - export IMAGE=${bamboo.build.docker.image.id} - - docker pull ${IMAGE} - - docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' - description: Resolve file permissions - checkout: - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - script: interpreter: SHELL @@ -62,22 +48,8 @@ Build and Test JDK 17: Build and Test JDK 21: key: JOB1 tasks: - - script: - interpreter: SHELL - scripts: - - |- - #!/bin/bash -eu - - set -x - - export IMAGE=${bamboo.build.docker.image.id} - - docker pull ${IMAGE} - - docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' - description: Resolve file permissions - checkout: - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - script: interpreter: SHELL @@ -97,22 +69,8 @@ Build and Test JDK 21: Build and Test JDK 24: key: BTJ24 tasks: - - script: - interpreter: SHELL - scripts: - - |- - #!/bin/bash -eu - - set -x - - export IMAGE=${bamboo.build.docker.image.id} - - docker pull ${IMAGE} - - docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' - description: Resolve file permissions - checkout: - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - script: interpreter: SHELL @@ -132,22 +90,8 @@ Build and Test JDK 24: Build and Test JDK 11: key: BTJ11 tasks: - - script: - interpreter: SHELL - scripts: - - |- - #!/bin/bash -eu - - set -x - - export IMAGE=${bamboo.build.docker.image.id} - - docker pull ${IMAGE} - - docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' - description: Resolve file permissions - checkout: - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - script: interpreter: SHELL @@ -167,22 +111,8 @@ Build and Test JDK 11: Build and Test JDK 8: key: BTJ8 tasks: - - script: - interpreter: SHELL - scripts: - - |- - #!/bin/bash -eu - - set -x - - export IMAGE=${bamboo.build.docker.image.id} - - docker pull ${IMAGE} - - docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' - description: Resolve file permissions - checkout: - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - script: interpreter: SHELL @@ -202,22 +132,8 @@ Build and Test JDK 8: Deploy to Maven: key: DTM tasks: - - script: - interpreter: SHELL - scripts: - - |- - #!/bin/bash -eu - - set -x - - export IMAGE=${bamboo.build.docker.image.id} - - docker pull ${IMAGE} - - docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' - description: Resolve file permissions - checkout: - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - script: interpreter: SHELL @@ -237,27 +153,13 @@ Deploy to Maven: Release to maven: key: RTM tasks: - - script: - interpreter: SHELL - scripts: - - |- - #!/bin/bash -eu - - set -x - - export IMAGE=${bamboo.build.docker.image.id} - - docker pull ${IMAGE} - - docker run -v m2-repo:/root/.m2/repository -v ${PWD}:/module --rm -w="/module" ${IMAGE} bash -c 'chmod -R 777 .' - description: Temporarily resolve file permissions - checkout: - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - checkout: repository: Release scripts path: release-scripts - force-clean-build: 'true' + force-clean-build: 'false' description: Checkout default repository - script: interpreter: SHELL