Create common job template for post merge build jobs
This change creates common job template, renames macros & scripts
and enables the use of the newly created job template for eiffel-playground
repo to test things out. Once it is verified working, the change will be
applied to other repos accordingly.
Change-Id: I0cbab579fafe9cc426aac56d9c82f5a3f15d0239
diff --git a/jjb/eiffel/eiffel-playground.yaml b/jjb/eiffel/eiffel-playground.yaml
index 65959b8..39f8578 100644
--- a/jjb/eiffel/eiffel-playground.yaml
+++ b/jjb/eiffel/eiffel-playground.yaml
@@ -29,7 +29,7 @@
- 'master':
branch: 'master'
project-git-repo: '{project}'
- project-build-macro: 'eiffel-build-periodic-macro'
+ project-build-macro: 'eiffel-global-container-build-macro'
image-dockerfile: 'Dockerfile'
image-name: '{project}'
image-tag: 'dev'
@@ -37,6 +37,6 @@
distro: ubuntu2004
jobs:
- - '{project-name}-build-periodic-{distro}-{stream}'
+ - '{project-name}-build-merge-{distro}-{stream}'
# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/global-eiffel-container-build-merge.yaml b/jjb/eiffel/global-eiffel-container-build-merge.yaml
new file mode 100644
index 0000000..70596af
--- /dev/null
+++ b/jjb/eiffel/global-eiffel-container-build-merge.yaml
@@ -0,0 +1,113 @@
+---
+# ============LICENSE_START=======================================================
+# Copyright (C) 2020 Nordix Foundation.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+- job-template:
+ name: '{project-name}-build-merge-{distro}-{stream}'
+
+ node: 'eiffel-build-{distro}'
+
+ disabled: false
+
+ concurrent: false
+
+ properties:
+ - logrotate
+ - github:
+ url: '$GIT_BASE_HTTPS/{project-git-repo}'
+
+ parameters:
+ - project-parameters:
+ project: '{project}'
+ branch: '{branch}'
+ - string:
+ name: GIT_BASE_HTTPS
+ default: https://github.com/eiffel-community
+ description: HTTPS URL of Project Repo on GitHub to clone repo.
+ - string:
+ name: GIT_BASE_SSH
+ default: git@github.com:eiffel-community
+ description: SSH URL of Project Repo on GitHub to clone repo.
+ - string:
+ name: IMAGE_DOCKERFILE
+ default: '{image-dockerfile}'
+ description: Dockerfile to use for building the container image
+ - string:
+ name: IMAGE_NAME
+ default: '{image-name}'
+ description: Name of the container image
+ - string:
+ name: IMAGE_TAG
+ default: '{image-tag}'
+ description: Tag to apply to the container image
+ - choice:
+ name: HARBOR_EIFFEL_PROJECT
+ choices:
+ - eiffel
+ - eiffel-playground
+ description: Project to push container images to. Default is eiffel. eiffel-playground is for development purposes.
+ - choice:
+ name: PODMAN_LOG_LEVEL
+ choices:
+ - error
+ - debug
+ - info
+ - warn
+ - fatal
+ - panic
+ description: Podman log level to use. Default is error.
+ - string:
+ name: NORDIX_REGISTRY
+ default: 'registry.nordix.org'
+ description: Nordix container image registry.
+
+ scm:
+ - git:
+ url: '$GIT_BASE_HTTPS/{project-git-repo}.git'
+ branches:
+ - '*/{branch}'
+ refspec: ''
+ timeout: 15
+ per-build-tag: false
+ skip-tag: true
+ shallow-clone: false
+ use-author: false
+ ignore-notify: false
+ wipe-workspace: true
+ prune: false
+ clean:
+ after: false
+ before: false
+ choosing-strategy: 'default'
+ basedir: '$WORKSPACE'
+
+ triggers:
+ - github
+
+ wrappers:
+ - build-timeout:
+ timeout: 10
+ - nordixinfra-harbor-creds-wrapper
+ - mask-passwords
+ - openstack:
+ single-use: True
+
+ builders:
+ - '{project-build-macro}'
+
+# vim: set ts=2 sw=2 expandtab:
diff --git a/jjb/eiffel/global-eiffel-container-build.yaml b/jjb/eiffel/global-eiffel-container-build-periodic.yaml
similarity index 100%
rename from jjb/eiffel/global-eiffel-container-build.yaml
rename to jjb/eiffel/global-eiffel-container-build-periodic.yaml
diff --git a/jjb/eiffel/macros/eiffel-macros.yaml b/jjb/eiffel/macros/eiffel-macros.yaml
index 699316e..994d4b1 100644
--- a/jjb/eiffel/macros/eiffel-macros.yaml
+++ b/jjb/eiffel/macros/eiffel-macros.yaml
@@ -1,5 +1,13 @@
---
- builder:
+ name: 'eiffel-global-container-build-macro'
+ builders:
+ - shell:
+ !include-raw: ../scripts/eiffel-global-container-build.sh
+
+# NOTE (fdegir): below macros will potentially be removed or renamed
+# once the above macro is taken into use
+- builder:
name: 'eiffel-build-periodic-macro'
builders:
- shell:
diff --git a/jjb/eiffel/scripts/eiffel-global-container-build.sh b/jjb/eiffel/scripts/eiffel-global-container-build.sh
new file mode 100644
index 0000000..7f9e6a3
--- /dev/null
+++ b/jjb/eiffel/scripts/eiffel-global-container-build.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+# ============LICENSE_START=======================================================
+# Copyright (C) 2020 The Nordix Foundation. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+set -o errexit
+set -o pipefail
+set -o nounset
+
+# navigate to root of the git clone
+cd "$WORKSPACE"
+
+# the Dockerfile to use for building the container image
+IMAGE_DOCKERFILE="${IMAGE_DOCKERFILE:?IMAGE_DOCKERFILE is unset!}"
+
+# the name of the container image
+IMAGE_NAME="${IMAGE_NAME:?IMAGE_NAME is unset!}"
+
+# the tag to apply to the container image
+IMAGE_TAG="${IMAGE_TAG:-latest}"
+
+# set image name
+IMAGE_NAME_TAG="$NORDIX_REGISTRY/$HARBOR_EIFFEL_PROJECT/$IMAGE_NAME:$IMAGE_TAG"
+
+# set the build command so we can log it to console
+PODMAN_BUILD_CMD="podman build --file $IMAGE_DOCKERFILE --log-level $PODMAN_LOG_LEVEL --tag $IMAGE_NAME_TAG ."
+
+echo "Info : Building the container image with the command"
+echo " $PODMAN_BUILD_CMD"
+echo "----------------------------------------------------------------"
+$PODMAN_BUILD_CMD
+echo "----------------------------------------------------------------"
+echo "Info : Build successful! List of container images is"
+echo "----------------------------------------------------------------"
+podman images --log-level $PODMAN_LOG_LEVEL
+echo "----------------------------------------------------------------"
+echo "Info : Logging in to registry.nordix.org and pushing the image"
+echo "----------------------------------------------------------------"
+podman login --log-level "$PODMAN_LOG_LEVEL" "$NORDIX_REGISTRY" --username "$HARBOR_USERNAME" --password "$HARBOR_PASSWORD"
+podman push --log-level "$PODMAN_LOG_LEVEL" "$IMAGE_NAME_TAG"
+podman logout --log-level "$PODMAN_LOG_LEVEL" "$NORDIX_REGISTRY"
+echo "----------------------------------------------------------------"
+echo "Info : Done!"
+
+# vim: set ts=2 sw=2 expandtab: