feat: immutable digest for the most specific tags (#113)

Detect updates of the Dockerfile template and Barman python
dependencies, and increase the imageReleaseVersion accordingly.
Avoid pushing an image if its most specific tag (fullTag)
already exists, thus preventing the override of the
existing digest.

Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
This commit is contained in:
Niccolò Fei
2024-09-05 16:48:18 +02:00
committed by GitHub
parent d0c032f6c1
commit 57be4d409f
2 changed files with 53 additions and 9 deletions

View File

@@ -90,6 +90,14 @@ generate_postgres() {
pipOptions="--break-system-packages"
fi
dockerTemplate="Dockerfile.template"
if [[ ${version} -gt "${POSTGRESQL_LATEST_MAJOR_RELEASE}" ]]; then
dockerTemplate="Dockerfile-beta.template"
fi
# Update requirements.txt
echo "$requirements" > "$versionDir/requirements.txt"
# Output the image being updated
echo "$postgresImageVersion"
@@ -111,9 +119,9 @@ generate_postgres() {
newRelease="false"
# Detect if postgres image updated
# Detect an update of the postgres image
if [ "$oldPostgresImageLastUpdate" != "$postgresImageLastUpdate" ]; then
echo "Debian Image changed from $oldPostgresImageLastUpdate to $postgresImageLastUpdate"
echo "Postgres image timestamp changed from $oldPostgresImageLastUpdate to $postgresImageLastUpdate"
newRelease="true"
record_version "${versionFile}" "POSTGRES_IMAGE_LAST_UPDATED" "${postgresImageLastUpdate}"
fi
@@ -125,6 +133,18 @@ generate_postgres() {
record_version "${versionFile}" "BARMAN_VERSION" "${barmanVersion}"
fi
# Detect an update of Dockerfile template
if [[ -n $(git diff --name-status "$dockerTemplate") ]]; then
echo "Detected update of $dockerTemplate"
newRelease="true"
fi
# Detect an update of requirements.txt
if [[ -n $(git diff --name-status "$versionDir/requirements.txt") ]]; then
echo "Detected update of requirements.txt dependencies"
newRelease="true"
fi
if [ "$oldPostgresImageVersion" != "$postgresImageVersion" ]; then
echo "PostgreSQL base image changed from $oldPostgresImageVersion to $postgresImageVersion"
record_version "${versionFile}" "IMAGE_RELEASE_VERSION" 1
@@ -135,12 +155,6 @@ generate_postgres() {
record_version "${versionFile}" "IMAGE_RELEASE_VERSION" $imageReleaseVersion
fi
dockerTemplate="Dockerfile.template"
if [[ ${version} -gt "${POSTGRESQL_LATEST_MAJOR_RELEASE}" ]]; then
dockerTemplate="Dockerfile-beta.template"
fi
echo "$requirements" > "$versionDir/requirements.txt"
sed -e 's/%%POSTGRES_IMAGE_VERSION%%/'"$postgresImageVersion"'/g' \
-e 's/%%IMAGE_RELEASE_VERSION%%/'"$imageReleaseVersion"'/g' \
-e 's/%%PIP_OPTIONS%%/'"${pipOptions}"'/g' \