Add a justfile with common commands
This commit is contained in:
parent
ce81f37ea5
commit
465d88c040
1 changed files with 156 additions and 0 deletions
156
justfile
Normal file
156
justfile
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
# This is a justfile. See https://github.com/casey/just
|
||||
# This is only used for local development. The builds made on the Fedora
|
||||
# infrastructure are run via Pungi in a Koji runroot.
|
||||
|
||||
# Set a default for some recipes
|
||||
default_variant := "fedora-iot"
|
||||
default_arch := "default"
|
||||
# Current default in Pungi
|
||||
force_nocache := "true"
|
||||
|
||||
# Just doesn't have a native dict type, but quoted bash dictionary works fine
|
||||
pretty_names := '(
|
||||
[fedora-iot]="IoT"
|
||||
)'
|
||||
|
||||
# Default is to only validate the manifests
|
||||
all: validate
|
||||
|
||||
# Basic validation to make sure the manifests are not completely broken
|
||||
validate:
|
||||
./ci/validate
|
||||
|
||||
# Output the processed manifest for a given variant (defaults to Silverblue)
|
||||
manifest variant=default_variant:
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
rpm-ostree compose tree --print-only --repo=repo {{variant}}.yaml
|
||||
|
||||
# Perform dependency resolution for a given variant (defaults to Silverblue)
|
||||
compose-dry-run variant=default_variant:
|
||||
#!/bin/bash
|
||||
set -euxo pipefail
|
||||
|
||||
mkdir -p repo cache logs
|
||||
if [[ ! -f "repo/config" ]]; then
|
||||
pushd repo > /dev/null || exit 1
|
||||
ostree init --repo . --mode=bare-user
|
||||
popd > /dev/null || exit 1
|
||||
fi
|
||||
|
||||
rpm-ostree compose tree --unified-core --repo=repo --dry-run {{variant}}.yaml
|
||||
|
||||
# Alias/shortcut for compose-image command
|
||||
compose variant=default_variant: (compose-image variant)
|
||||
|
||||
# Compose a variant using the legacy non container path (defaults to Silverblue)
|
||||
compose-legacy variant=default_variant:
|
||||
#!/bin/bash
|
||||
set -euxo pipefail
|
||||
|
||||
declare -A pretty_names={{pretty_names}}
|
||||
variant={{variant}}
|
||||
variant_pretty=${pretty_names[$variant]-}
|
||||
if [[ -z $variant_pretty ]]; then
|
||||
echo "Unknown variant"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
./ci/validate > /dev/null || (echo "Failed manifest validation" && exit 1)
|
||||
|
||||
mkdir -p repo cache logs
|
||||
if [[ ! -f "repo/config" ]]; then
|
||||
pushd repo > /dev/null || exit 1
|
||||
ostree init --repo . --mode=bare-user
|
||||
popd > /dev/null || exit 1
|
||||
fi
|
||||
# Set option to reduce fsync for transient builds
|
||||
ostree --repo=repo config set 'core.fsync' 'false'
|
||||
|
||||
buildid="$(date '+%Y%m%d.0')"
|
||||
timestamp="$(date --iso-8601=sec)"
|
||||
echo "${buildid}" > .buildid
|
||||
|
||||
version="$(rpm-ostree compose tree --print-only --repo=repo ${variant}.yaml | jq -r '."mutate-os-release"')"
|
||||
echo "Composing ${variant_pretty} ${version}.${buildid} ..."
|
||||
|
||||
ARGS="--repo=repo --cachedir=cache"
|
||||
ARGS+=" --unified-core"
|
||||
if [[ {{force_nocache}} == "true" ]]; then
|
||||
ARGS+=" --force-nocache"
|
||||
fi
|
||||
CMD="rpm-ostree"
|
||||
if [[ ${EUID} -ne 0 ]]; then
|
||||
CMD="sudo rpm-ostree"
|
||||
fi
|
||||
|
||||
${CMD} compose tree ${ARGS} \
|
||||
--add-metadata-string="version=${variant_pretty} ${version}.${buildid}" \
|
||||
"${variant}-ostree.yaml" \
|
||||
|& tee "logs/${variant}_${version}_${buildid}.${timestamp}.log"
|
||||
|
||||
if [[ ${EUID} -ne 0 ]]; then
|
||||
sudo chown --recursive "$(id --user --name):$(id --group --name)" repo cache
|
||||
fi
|
||||
|
||||
ostree summary --repo=repo --update
|
||||
|
||||
# Compose an Ostree Native Container OCI image
|
||||
compose-image variant=default_variant:
|
||||
#!/bin/bash
|
||||
set -euxo pipefail
|
||||
|
||||
declare -A pretty_names={{pretty_names}}
|
||||
variant={{variant}}
|
||||
variant_pretty=${pretty_names[$variant]-}
|
||||
if [[ -z $variant_pretty ]]; then
|
||||
echo "Unknown variant"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
./ci/validate > /dev/null || (echo "Failed manifest validation" && exit 1)
|
||||
|
||||
mkdir -p repo cache
|
||||
if [[ ! -f "repo/config" ]]; then
|
||||
pushd repo > /dev/null || exit 1
|
||||
ostree init --repo . --mode=bare-user
|
||||
popd > /dev/null || exit 1
|
||||
fi
|
||||
# Set option to reduce fsync for transient builds
|
||||
ostree --repo=repo config set 'core.fsync' 'false'
|
||||
|
||||
buildid="$(date '+%Y%m%d.0')"
|
||||
timestamp="$(date --iso-8601=sec)"
|
||||
echo "${buildid}" > .buildid
|
||||
|
||||
version="$(rpm-ostree compose tree --print-only --repo=repo ${variant}.yaml | jq -r '."mutate-os-release"')"
|
||||
echo "Composing ${variant_pretty} ${version}.${buildid} ..."
|
||||
|
||||
ARGS="--cachedir=cache --initialize"
|
||||
if [[ {{force_nocache}} == "true" ]]; then
|
||||
ARGS+=" --force-nocache"
|
||||
fi
|
||||
# To debug with gdb, use: gdb --args ...
|
||||
CMD="rpm-ostree"
|
||||
if [[ ${EUID} -ne 0 ]]; then
|
||||
CMD="sudo rpm-ostree"
|
||||
fi
|
||||
|
||||
${CMD} compose image ${ARGS} \
|
||||
--label="quay.expires-after=4w" \
|
||||
"${variant}.yaml" \
|
||||
"${variant}.ociarchive"
|
||||
|
||||
# Clean up everything
|
||||
clean-all:
|
||||
just clean-repo
|
||||
just clean-cache
|
||||
|
||||
# Only clean the ostree repo
|
||||
clean-repo:
|
||||
rm -rf ./repo
|
||||
|
||||
# Only clean the package and repo caches
|
||||
clean-cache:
|
||||
rm -rf ./cache
|
||||
Loading…
Add table
Add a link
Reference in a new issue