Files
MoShiro/ci/buildah-env.sh
T

24 lines
1.1 KiB
Bash

#!/usr/bin/env bash
# Explicit storage paths also work when a rootless Podman agent runs as UID 0
# inside its user namespace. Changing HOME alone then selects the system store.
moshiro_setup_buildah() {
local store_home="${1:?Buildah cache directory is required}"
local config="$store_home/.config/containers/moshiro-storage.conf"
local key runroot
key="$(printf '%s' "$store_home" | sha256sum | cut -c1-16)"
runroot="${XDG_RUNTIME_DIR:-/tmp}/moshiro-buildah-$(id -u)/$key"
mkdir -p "$store_home/.local/share/containers/storage" "$(dirname "$config")" "$runroot"
(
umask 077
printf '[storage]\ndriver = "%s"\ngraphroot = "%s"\nrunroot = "%s"\n' \
"${STORAGE_DRIVER:-overlay}" "$store_home/.local/share/containers/storage" "$runroot" > "$config"
)
chmod 700 "$runroot"
export CONTAINERS_STORAGE_CONF="$config"
# The outer Podman container provides the user namespace and capabilities;
# RUN does not need a second OCI runtime or nested cgroup management.
export BUILDAH_ISOLATION="${BUILDAH_ISOLATION:-chroot}"
buildah info >/dev/null
echo "Buildah store: $store_home/.local/share/containers/storage ($BUILDAH_ISOLATION)"
}