Support using OS other than Debian as base for custom images

Signed-off-by: Balasankar "Balu" C <balasankar@gitlab.com>
This commit is contained in:
Balasankar "Balu" C 2022-06-15 09:51:03 +05:30
parent 703c30315e
commit 0dea43ac3b
No known key found for this signature in database
GPG key ID: B77D2E2E23735427
14 changed files with 345 additions and 226 deletions

View file

@ -1,12 +1,35 @@
PATH_TOOLS=(DEBIAN RUBY GOLANG NODE POSTGRESQL)
# Note: Check out https://wiki.bash-hackers.org/syntax/pe for documentation on
# various variable operations used in this script.
PATH_TOOLS=(OS RUBY GOLANG NODE POSTGRESQL)
TAG_TOOLS=(BUNDLER RUBYGEMS GIT LFS CHROME YARN GRAPHICSMAGICK PGBOUNCER BAZELISK DOCKER BUILDX GCLOUD KUBECTL HELM)
# Generate the docker image path using the components that were specified via
# variables.
# For example, consider a CI job which specifies the following variables:
# OS: debian:bullseye
# RUBY: 2.7
# GOLANG: 1.16
# GIT: 2.33
# PGBOUNCER: 1.14
# POSTGRESQL: 11
# With the above variables, this function will return
# `debian-bullseye-ruby-2.7-golang-1.16-postgresql-11`
function get_image_path() {
local path
path=""
for tool in "${PATH_TOOLS[@]}"; do
if [[ -n "${!tool}" ]]; then
path="${path}-${tool,,}-${!tool}"
if [[ "${tool}" == "OS" ]]; then
# The OS variable's value is following <distro>:<version>
# format. We split that string into individual components.
distro=${!tool%:*}
version=${!tool#*:}
path="${path}-${distro}-${version}"
else
# Convert the tool name into lowercase using `,,` operator
path="${path}-${tool,,}-${!tool}"
fi
fi
done
@ -17,15 +40,26 @@ function get_image_path() {
fi
}
# Generate the image tag using the components that were specified via variables.
# For example, consider a CI job which specifies the following variables:
# OS: debian:bullseye
# RUBY: 2.7
# GOLANG: 1.16
# GIT: 2.33
# PGBOUNCER: 1.14
# POSTGRESQL: 11
# For that job, this function will return
# `git-2.33-pgbouncer-1.14`
function get_image_tag() {
local tag
tag=""
for tool in "${TAG_TOOLS[@]}"; do
if [[ -n "${!tool}" ]]; then
# Convert the tool name into lowercase using `,,` operator
tag="${tag}-${tool,,}-${!tool}"
fi
done
if [[ -n "$tag" ]]; then
echo "${tag:1}"
else