11#! /bin/bash
22# ##################################################
3- # Usage: assemble-docker-tags.sh [ --variation <variation> --os <os> --patch-version <patch-version> --latest ]
3+ # Usage: assemble-docker-tags.sh --variation <variation> --os <os> --patch-version <patch-version> [--stable-release --github-release-tag <tag> ]
44# ##################################################
55# This scripts dives deep into the advanced logic of assembling Docker tags for GitHub Actions.
66# If $CI is "true", it outputs the tags to GITHUB_ENV for use in subsequent steps.
@@ -104,6 +104,12 @@ add_docker_tag() {
104104
105105 # Trim commas for a better output
106106 echo_color_message blue " 🐳 Set tag: ${tag_name// ,} "
107+
108+ if [[ -n " $GITHUB_RELEASE_TAG " ]]; then
109+ DOCKER_TAGS+=" ,$tag_name -$GITHUB_RELEASE_TAG "
110+ echo_color_message blue " 🐳 Set tag: ${tag_name// ,} -$GITHUB_RELEASE_TAG "
111+ fi
112+
107113 done
108114}
109115
@@ -136,7 +142,7 @@ function is_default_variation() {
136142}
137143
138144help_menu () {
139- echo " Usage: $0 [ --variation <variation> --os <os> --patch-version <patch-version> --latest ]"
145+ echo " Usage: $0 --variation <variation> --os <os> --patch-version <patch-version> [--stable-release --github-release-tag <tag> ]"
140146 echo
141147 echo " This script dives deep into the advanced logic of assembling Docker tags for GitHub Actions."
142148 echo " If \$ CI is 'true', it outputs the tags to GITHUB_ENV for use in subsequent steps."
@@ -147,6 +153,7 @@ help_menu() {
147153 echo " --variation <variation> Set the PHP variation (e.g., apache, fpm)"
148154 echo " --os <os> Set the base OS (e.g., bullseye, bookworm, alpine)"
149155 echo " --patch-version <patch-version> Set the PHP patch version (e.g., 7.4.10)"
156+ echo " --github-release-tag <tag> Set the GitHub release tag"
150157 echo " --stable-release Flag the tags for a stable release"
151158 echo
152159 echo " Environment Variables (Defaults):"
@@ -173,6 +180,10 @@ while [[ $# -gt 0 ]]; do
173180 PHP_BUILD_VERSION=" $2 "
174181 shift 2
175182 ;;
183+ --github-release-tag)
184+ GITHUB_RELEASE_TAG=" $2 "
185+ shift 2
186+ ;;
176187 --stable-release)
177188 RELEASE_TYPE=" stable"
178189 shift
@@ -212,12 +223,12 @@ build_major_version="${build_patch_version%%.*}"
212223build_minor_version=" ${build_patch_version% .* } "
213224
214225# Fetch version data from the PHP Versions file
215- latest_global_stable_major=$( yq -o=json $PHP_VERSIONS_FILE | jq -r ' [.php_versions[] | select(.major | test("-rc") | not) | .major | tonumber] | max | tostring' )
216- latest_global_stable_minor=$( yq -o=json $PHP_VERSIONS_FILE | jq -r --arg latest_global_stable_major " $latest_global_stable_major " ' .php_versions[] | select(.major == $latest_global_stable_major) | .minor_versions | map(select(.minor | test("-rc") | not) | .minor | split(".") | .[1] | tonumber) | max | $latest_global_stable_major + "." + tostring' )
217- latest_minor_within_build_major=$( yq -o=json $PHP_VERSIONS_FILE | jq -r --arg build_major " $build_major_version " ' .php_versions[] | select(.major == $build_major) | .minor_versions | map(select(.minor | test("-rc") | not) | .minor | split(".") | .[1] | tonumber) | max | $build_major + "." + tostring' )
218- latest_patch_within_build_minor=$( yq -o=json $PHP_VERSIONS_FILE | jq -r --arg build_minor " $build_minor_version " ' .php_versions[] | .minor_versions[] | select(.minor == $build_minor) | .patch_versions | map( split(".") | map(tonumber) ) | max | join(".")' )
219- latest_patch_global=$( yq -o=json $PHP_VERSIONS_FILE | jq -r ' [.php_versions[] | .minor_versions[] | select(.minor | test("-rc") | not) | .patch_versions[] | select(test("-rc") | not) | split(".") | map(tonumber) ] | max | join(".")' )
220- default_base_os_within_build_minor=$( yq -o=json $PHP_VERSIONS_FILE | jq -r --arg build_minor " $build_minor_version " ' .php_versions[] | .minor_versions[] | select(.minor == $build_minor) | .base_os[] | select(.default == true) | .name' )
226+ latest_global_stable_major=$( yq -o=json " $PHP_VERSIONS_FILE " | jq -r ' [.php_versions[] | select(.major | test("-rc") | not) | .major | tonumber] | max | tostring' )
227+ latest_global_stable_minor=$( yq -o=json " $PHP_VERSIONS_FILE " | jq -r --arg latest_global_stable_major " $latest_global_stable_major " ' .php_versions[] | select(.major == $latest_global_stable_major) | .minor_versions | map(select(.minor | test("-rc") | not) | .minor | split(".") | .[1] | tonumber) | max | $latest_global_stable_major + "." + tostring' )
228+ latest_minor_within_build_major=$( yq -o=json " $PHP_VERSIONS_FILE " | jq -r --arg build_major " $build_major_version " ' .php_versions[] | select(.major == $build_major) | .minor_versions | map(select(.minor | test("-rc") | not) | .minor | split(".") | .[1] | tonumber) | max | $build_major + "." + tostring' )
229+ latest_patch_within_build_minor=$( yq -o=json " $PHP_VERSIONS_FILE " | jq -r --arg build_minor " $build_minor_version " ' .php_versions[] | .minor_versions[] | select(.minor == $build_minor) | .patch_versions | map( split(".") | map(tonumber) ) | max | join(".")' )
230+ latest_patch_global=$( yq -o=json " $PHP_VERSIONS_FILE " | jq -r ' [.php_versions[] | .minor_versions[] | select(.minor | test("-rc") | not) | .patch_versions[] | select(test("-rc") | not) | split(".") | map(tonumber) ] | max | join(".")' )
231+ default_base_os_within_build_minor=$( yq -o=json " $PHP_VERSIONS_FILE " | jq -r --arg build_minor " $build_minor_version " ' .php_versions[] | .minor_versions[] | select(.minor == $build_minor) | .base_os[] | select(.default == true) | .name' )
221232
222233check_vars \
223234 " 🚨 Missing critical build variable. Check the script logic and logs" \
0 commit comments