eiffel: Create build macros and scripts for the projects
Some Eiffel projects have different processes for builds which require
us to have project specific builder macros and scripts accordingly.
This change introduces such macros and scripts.
In order to ensure reusability, the projects with same build processes
use the same build macro which points to a common build script.
The job name is also updated according to convention.
Change-Id: Iaf00286214c2072a573401c45b12b6fd0835e3eb
diff --git a/jjb/eiffel/eiffel-gerrit-herald.yaml b/jjb/eiffel/eiffel-gerrit-herald.yaml
index 2a165df..33e2a67 100644
--- a/jjb/eiffel/eiffel-gerrit-herald.yaml
+++ b/jjb/eiffel/eiffel-gerrit-herald.yaml
@@ -28,11 +28,11 @@
stream:
- 'master':
branch: 'master'
- project-build-root: './'
+ project-build-macro: 'eiffel-build-periodic-macro'
distro: ubuntu2004
jobs:
- - '{project-name}-build-{distro}-{stream}-periodic'
+ - '{project-name}-build-periodic-{distro}-{stream}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/eiffel-intelligence-frontend.yaml b/jjb/eiffel/eiffel-intelligence-frontend.yaml
index 71c4517..6058d51 100644
--- a/jjb/eiffel/eiffel-intelligence-frontend.yaml
+++ b/jjb/eiffel/eiffel-intelligence-frontend.yaml
@@ -28,11 +28,11 @@
stream:
- 'master':
branch: 'master'
- project-build-root: 'src/main/docker'
+ project-build-macro: 'eiffel-intelligence-frontend-build-periodic-macro'
distro: ubuntu2004
jobs:
- - '{project-name}-build-{distro}-{stream}-periodic'
+ - '{project-name}-build-periodic-{distro}-{stream}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/eiffel-intelligence.yaml b/jjb/eiffel/eiffel-intelligence.yaml
index eb15f2d..8d7d7e0 100644
--- a/jjb/eiffel/eiffel-intelligence.yaml
+++ b/jjb/eiffel/eiffel-intelligence.yaml
@@ -28,11 +28,11 @@
stream:
- 'master':
branch: 'master'
- project-build-root: 'src/main/docker'
+ project-build-macro: 'eiffel-intelligence-build-periodic-macro'
distro: ubuntu2004
jobs:
- - '{project-name}-build-{distro}-{stream}-periodic'
+ - '{project-name}-build-periodic-{distro}-{stream}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/eiffel-playground.yaml b/jjb/eiffel/eiffel-playground.yaml
index 2798afc..501ace7 100644
--- a/jjb/eiffel/eiffel-playground.yaml
+++ b/jjb/eiffel/eiffel-playground.yaml
@@ -28,11 +28,11 @@
stream:
- 'master':
branch: 'master'
- project-build-root: './'
+ project-build-macro: 'eiffel-build-periodic-macro'
distro: ubuntu2004
jobs:
- - '{project-name}-build-{distro}-{stream}-periodic'
+ - '{project-name}-build-periodic-{distro}-{stream}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/eiffel-remrem-generate.yaml b/jjb/eiffel/eiffel-remrem-generate.yaml
index bde59a0..c418970 100644
--- a/jjb/eiffel/eiffel-remrem-generate.yaml
+++ b/jjb/eiffel/eiffel-remrem-generate.yaml
@@ -28,11 +28,11 @@
stream:
- 'master':
branch: 'master'
- project-build-root: 'service/src/main/docker'
+ project-build-macro: 'eiffel-remrem-generate-build-periodic-macro'
distro: ubuntu2004
jobs:
- - '{project-name}-build-{distro}-{stream}-periodic'
+ - '{project-name}-build-periodic-{distro}-{stream}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/eiffel-remrem-publish.yaml b/jjb/eiffel/eiffel-remrem-publish.yaml
index f809292..7ac5b94 100644
--- a/jjb/eiffel/eiffel-remrem-publish.yaml
+++ b/jjb/eiffel/eiffel-remrem-publish.yaml
@@ -28,11 +28,11 @@
stream:
- 'master':
branch: 'master'
- project-build-root: 'publish-service/src/main/docker'
+ project-build-macro: 'eiffel-remrem-publish-build-periodic-macro'
distro: ubuntu2004
jobs:
- - '{project-name}-build-{distro}-{stream}-periodic'
+ - '{project-name}-build-periodic-{distro}-{stream}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/global-eiffel-container-build.yaml b/jjb/eiffel/global-eiffel-container-build.yaml
index cf28800..044a8e6 100644
--- a/jjb/eiffel/global-eiffel-container-build.yaml
+++ b/jjb/eiffel/global-eiffel-container-build.yaml
@@ -18,7 +18,7 @@
# ============LICENSE_END=========================================================
- job-template:
- name: '{project-name}-build-{distro}-{stream}-periodic'
+ name: '{project-name}-build-periodic-{distro}-{stream}'
node: 'eiffel-build-{distro}'
@@ -41,10 +41,6 @@
name: GIT_BASE_SSH
default: git@github.com:eiffel-community
description: SSH URL of Project Repo on GitHub to clone repo.
- - string:
- name: PROJECT_BUILD_ROOT
- default: '{project-build-root}'
- description: Dockerfiles are located in different paths so this sets the path to navigate in the clone.
- choice:
name: HARBOR_EIFFEL_PROJECT
choices:
@@ -100,7 +96,6 @@
single-use: True
builders:
- - shell:
- !include-raw-escape: ./scripts/eiffel-container-build-tag-push.sh
+ - '{project-build-macro}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/macros/eiffel-macros.yaml b/jjb/eiffel/macros/eiffel-macros.yaml
new file mode 100644
index 0000000..699316e
--- /dev/null
+++ b/jjb/eiffel/macros/eiffel-macros.yaml
@@ -0,0 +1,32 @@
+---
+- builder:
+ name: 'eiffel-build-periodic-macro'
+ builders:
+ - shell:
+ !include-raw: ../scripts/eiffel-build-periodic.sh
+
+- builder:
+ name: 'eiffel-intelligence-build-periodic-macro'
+ builders:
+ - shell:
+ !include-raw: ../scripts/eiffel-intelligence-build-periodic.sh
+
+- builder:
+ name: 'eiffel-intelligence-frontend-build-periodic-macro'
+ builders:
+ - shell:
+ !include-raw: ../scripts/eiffel-intelligence-frontend-build-periodic.sh
+
+- builder:
+ name: 'eiffel-remrem-generate-build-periodic-macro'
+ builders:
+ - shell:
+ !include-raw: ../scripts/eiffel-remrem-generate-build-periodic.sh
+
+- builder:
+ name: 'eiffel-remrem-publish-build-periodic-macro'
+ builders:
+ - shell:
+ !include-raw: ../scripts/eiffel-remrem-publish-build-periodic.sh
+
+# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh b/jjb/eiffel/scripts/eiffel-build-periodic.sh
similarity index 96%
rename from jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
rename to jjb/eiffel/scripts/eiffel-build-periodic.sh
index 26049e2..c989fa3 100644
--- a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
+++ b/jjb/eiffel/scripts/eiffel-build-periodic.sh
@@ -22,8 +22,8 @@
set -o pipefail
set -o nounset
-# navigate to where Dockerfile is located
-cd "$WORKSPACE/$PROJECT_BUILD_ROOT"
+# navigate to root of the git clone
+cd "$WORKSPACE"
# the image tagged with latest for the timebeing since we are building from the tip of master branch
IMAGE_TAG="latest"
diff --git a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh b/jjb/eiffel/scripts/eiffel-intelligence-build-periodic.sh
similarity index 62%
copy from jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
copy to jjb/eiffel/scripts/eiffel-intelligence-build-periodic.sh
index 26049e2..6a68ea9 100644
--- a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
+++ b/jjb/eiffel/scripts/eiffel-intelligence-build-periodic.sh
@@ -22,8 +22,34 @@
set -o pipefail
set -o nounset
-# navigate to where Dockerfile is located
-cd "$WORKSPACE/$PROJECT_BUILD_ROOT"
+# navigate to root of the git clone
+cd "$WORKSPACE"
+
+# TODO (fdegir): the versions need to be parameterized
+# they are hardcoded in the script to get the basic builds working
+# the job and script will be updated once the build is working and the versions are confirmed
+# set openjdk and maven versions
+OPENJDK_VERSION="8u265-b01-0ubuntu2~20.04"
+MAVEN_VERSION="3.6.3-1"
+
+# set maven build command
+MAVEN_BUILD_CMD="mvn --quiet --batch-mode package -DskipTests"
+
+# install openjdk and maven
+echo "Info : Installing openjdk and maven"
+echo "----------------------------------------------------------------"
+sudo apt install -y -qq openjdk-8-jdk-headless="$OPENJDK_VERSION" maven="$MAVEN_VERSION"
+echo "----------------------------------------------------------------"
+echo "Info : Building the project with the command"
+echo " $MAVEN_BUILD_CMD"
+echo "----------------------------------------------------------------"
+$MAVEN_BUILD_CMD
+# find the warfile
+PROJECT_WAR_FILE=$(ls target/*.war)
+echo "----------------------------------------------------------------"
+echo "Info : Build successful! Artifact is available as"
+ls -al $PROJECT_WAR_FILE
+echo "----------------------------------------------------------------"
# the image tagged with latest for the timebeing since we are building from the tip of master branch
IMAGE_TAG="latest"
@@ -32,7 +58,7 @@
IMAGE_NAME_TAG="$NORDIX_REGISTRY/$HARBOR_EIFFEL_PROJECT/$PROJECT:$IMAGE_TAG"
# set the build command so we can log it to console
-PODMAN_BUILD_CMD="podman build --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
+PODMAN_BUILD_CMD="podman build --build-arg URL=$PROJECT_WAR_FILE --file src/main/docker/Dockerfile --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
echo "Info : Building the container image with the command"
echo " $PODMAN_BUILD_CMD"
diff --git a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh b/jjb/eiffel/scripts/eiffel-intelligence-frontend-build-periodic.sh
similarity index 62%
copy from jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
copy to jjb/eiffel/scripts/eiffel-intelligence-frontend-build-periodic.sh
index 26049e2..6a68ea9 100644
--- a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
+++ b/jjb/eiffel/scripts/eiffel-intelligence-frontend-build-periodic.sh
@@ -22,8 +22,34 @@
set -o pipefail
set -o nounset
-# navigate to where Dockerfile is located
-cd "$WORKSPACE/$PROJECT_BUILD_ROOT"
+# navigate to root of the git clone
+cd "$WORKSPACE"
+
+# TODO (fdegir): the versions need to be parameterized
+# they are hardcoded in the script to get the basic builds working
+# the job and script will be updated once the build is working and the versions are confirmed
+# set openjdk and maven versions
+OPENJDK_VERSION="8u265-b01-0ubuntu2~20.04"
+MAVEN_VERSION="3.6.3-1"
+
+# set maven build command
+MAVEN_BUILD_CMD="mvn --quiet --batch-mode package -DskipTests"
+
+# install openjdk and maven
+echo "Info : Installing openjdk and maven"
+echo "----------------------------------------------------------------"
+sudo apt install -y -qq openjdk-8-jdk-headless="$OPENJDK_VERSION" maven="$MAVEN_VERSION"
+echo "----------------------------------------------------------------"
+echo "Info : Building the project with the command"
+echo " $MAVEN_BUILD_CMD"
+echo "----------------------------------------------------------------"
+$MAVEN_BUILD_CMD
+# find the warfile
+PROJECT_WAR_FILE=$(ls target/*.war)
+echo "----------------------------------------------------------------"
+echo "Info : Build successful! Artifact is available as"
+ls -al $PROJECT_WAR_FILE
+echo "----------------------------------------------------------------"
# the image tagged with latest for the timebeing since we are building from the tip of master branch
IMAGE_TAG="latest"
@@ -32,7 +58,7 @@
IMAGE_NAME_TAG="$NORDIX_REGISTRY/$HARBOR_EIFFEL_PROJECT/$PROJECT:$IMAGE_TAG"
# set the build command so we can log it to console
-PODMAN_BUILD_CMD="podman build --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
+PODMAN_BUILD_CMD="podman build --build-arg URL=$PROJECT_WAR_FILE --file src/main/docker/Dockerfile --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
echo "Info : Building the container image with the command"
echo " $PODMAN_BUILD_CMD"
diff --git a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh b/jjb/eiffel/scripts/eiffel-remrem-generate-build-periodic.sh
similarity index 60%
copy from jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
copy to jjb/eiffel/scripts/eiffel-remrem-generate-build-periodic.sh
index 26049e2..b7cf3e2 100644
--- a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
+++ b/jjb/eiffel/scripts/eiffel-remrem-generate-build-periodic.sh
@@ -22,8 +22,35 @@
set -o pipefail
set -o nounset
-# navigate to where Dockerfile is located
-cd "$WORKSPACE/$PROJECT_BUILD_ROOT"
+# navigate to root of the git clone
+cd "$WORKSPACE"
+
+# TODO (fdegir): the versions need to be parameterized
+# they are hardcoded in the script to get the basic builds working
+# the job and script will be updated once the build is working and the versions are confirmed
+# set openjdk and maven versions
+OPENJDK_VERSION="8u265-b01-0ubuntu2~20.04"
+MAVEN_VERSION="3.6.3-1"
+
+# set maven build command
+MAVEN_BUILD_CMD="mvn --quiet --batch-mode package -DskipTests"
+
+# install openjdk and maven
+echo "Info : Installing openjdk and maven"
+echo "----------------------------------------------------------------"
+sudo apt install -y -qq openjdk-8-jdk-headless="$OPENJDK_VERSION" maven="$MAVEN_VERSION"
+echo "----------------------------------------------------------------"
+echo "Info : Building the project with the command"
+echo " $MAVEN_BUILD_CMD"
+echo "----------------------------------------------------------------"
+cd service
+$MAVEN_BUILD_CMD
+# find the warfile - we need to be in the folder where the service code is located
+PROJECT_WAR_FILE=$(ls target/*.war)
+echo "----------------------------------------------------------------"
+echo "Info : Build successful! Artifact is available as"
+ls -al $PROJECT_WAR_FILE
+echo "----------------------------------------------------------------"
# the image tagged with latest for the timebeing since we are building from the tip of master branch
IMAGE_TAG="latest"
@@ -32,7 +59,7 @@
IMAGE_NAME_TAG="$NORDIX_REGISTRY/$HARBOR_EIFFEL_PROJECT/$PROJECT:$IMAGE_TAG"
# set the build command so we can log it to console
-PODMAN_BUILD_CMD="podman build --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
+PODMAN_BUILD_CMD="podman build --build-arg URL=$PROJECT_WAR_FILE --file src/main/docker/Dockerfile --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
echo "Info : Building the container image with the command"
echo " $PODMAN_BUILD_CMD"
diff --git a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh b/jjb/eiffel/scripts/eiffel-remrem-publish-build-periodic.sh
similarity index 60%
copy from jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
copy to jjb/eiffel/scripts/eiffel-remrem-publish-build-periodic.sh
index 26049e2..c79d254 100644
--- a/jjb/eiffel/scripts/eiffel-container-build-tag-push.sh
+++ b/jjb/eiffel/scripts/eiffel-remrem-publish-build-periodic.sh
@@ -22,8 +22,35 @@
set -o pipefail
set -o nounset
-# navigate to where Dockerfile is located
-cd "$WORKSPACE/$PROJECT_BUILD_ROOT"
+# navigate to root of the git clone
+cd "$WORKSPACE"
+
+# TODO (fdegir): the versions need to be parameterized
+# they are hardcoded in the script to get the basic builds working
+# the job and script will be updated once the build is working and the versions are confirmed
+# set openjdk and maven versions
+OPENJDK_VERSION="8u265-b01-0ubuntu2~20.04"
+MAVEN_VERSION="3.6.3-1"
+
+# set maven build command
+MAVEN_BUILD_CMD="mvn --quiet --batch-mode package -DskipTests"
+
+# install openjdk and maven
+echo "Info : Installing openjdk and maven"
+echo "----------------------------------------------------------------"
+sudo apt install -y -qq openjdk-8-jdk-headless="$OPENJDK_VERSION" maven="$MAVEN_VERSION"
+echo "----------------------------------------------------------------"
+echo "Info : Building the project with the command"
+echo " $MAVEN_BUILD_CMD"
+echo "----------------------------------------------------------------"
+$MAVEN_BUILD_CMD
+# find the warfile - we need to be in the folder where the service code is located
+cd publish-service
+PROJECT_WAR_FILE=$(ls target/*.war)
+echo "----------------------------------------------------------------"
+echo "Info : Build successful! Artifact is available as"
+ls -al $PROJECT_WAR_FILE
+echo "----------------------------------------------------------------"
# the image tagged with latest for the timebeing since we are building from the tip of master branch
IMAGE_TAG="latest"
@@ -32,7 +59,7 @@
IMAGE_NAME_TAG="$NORDIX_REGISTRY/$HARBOR_EIFFEL_PROJECT/$PROJECT:$IMAGE_TAG"
# set the build command so we can log it to console
-PODMAN_BUILD_CMD="podman build --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
+PODMAN_BUILD_CMD="podman build --build-arg URL=$PROJECT_WAR_FILE --file src/main/docker/Dockerfile --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
echo "Info : Building the container image with the command"
echo " $PODMAN_BUILD_CMD"