Skip to content

UIFR-226: Added support for Bamboo Specs. #88

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 10, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
365 changes: 365 additions & 0 deletions bamboo-specs/bamboo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,365 @@
---
version: 2
plan:
project-key: UIFR
key: UFL
name: UI Framework Latest
stages:
- Default Stage:
manual: false
final: false
jobs:
- Build and Test JDK 17
- Build and Test JDK 24
- Build and Test JDK 21
- Build and Test JDK 8
- 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 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 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: []
Build and Test JDK 21:
key: BTJ21
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-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 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 .'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we running docker twice for each Java version?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The difference is in the executed command for each of the docker runs. This here, is a task that should run before the main source-code checkout task and consequently before the main maven build task. This particular task (a docker run script involving ... chmod -R .) particularly helps to resolve file permission effects of previous builds or build-failures.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be resolved as agreed here.

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: []
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-amazoncorretto-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: Resolve file permissions
- checkout:
force-clean-build: 'true'
description: Checkout Default Repository
- checkout:
repository: Git
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: openmrs/openmrs-core:dev-amazoncorretto-21
maven.development.version: 4.1.0-SNAPSHOT
maven.release.version: 4.0.1
repositories:
- Git:
type: git
url: https://github.com/openmrs/openmrs-module-uiframework.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: UIFR-UFL
plan-permissions:
- roles:
- anonymous
permissions:
- view
...