You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.5 KiB
38 lines
1.5 KiB
#!/bin/bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
# Compute podman command line arguments
|
|
declare -a PODMAN_ARGS=()
|
|
|
|
# Inject the desired CentOS Stream version as build arguments
|
|
declare CENTOS_VERSION="10"
|
|
PODMAN_ARGS+=( --build-arg CENTOS_VERSION="${CENTOS_VERSION}" --build-arg EPEL_VERSION="${CENTOS_VERSION}" )
|
|
|
|
# Tag the resulting image with the current date
|
|
declare TS="$(date -I)"
|
|
PODMAN_ARGS+=( -t "localhost/mirrors/centos-stream-${CENTOS_VERSION}:${TS}" )
|
|
|
|
# Run rsync on the previous dataset if available, to speed up transfer and save on storage.
|
|
declare -a REBUILD=false
|
|
if podman image inspect "localhost/mirrors/centos-stream-${CENTOS_VERSION}:latest" &>/dev/null; then
|
|
PODMAN_ARGS+=( --from "localhost/mirrors/centos-stream-${CENTOS_VERSION}:latest" )
|
|
PODMAN_ARGS+=( --file Containerfile.sync )
|
|
else
|
|
PODMAN_ARGS+=( --file Containerfile.base )
|
|
REBUILD=true
|
|
fi
|
|
|
|
# Build the image.
|
|
# Note: during the build, the repositories will be synced and the result will be stored in the image.
|
|
podman build "${PODMAN_ARGS[@]}" .
|
|
podman tag "localhost/mirrors/centos-stream-${CENTOS_VERSION}:${TS}" "localhost/mirrors/centos-stream-${CENTOS_VERSION}:latest"
|
|
|
|
# If the base image has been built, restart the build to synchronize the repositories with the latest data.
|
|
if [[ "$REBUILD" == "true" ]]; then
|
|
exec "${BASH_SOURCE[0]}"
|
|
fi
|
|
|
|
# Here you can add the "podman push" command to send the mirror to your registry.
|
|
# Do not forget to disable layer compression otherwise the push & pull operations
|
|
# will be very slow!
|
|
|