FedWiki OCI Image
This repository contains a Containerfile and related scripts to build a FedWiki OCI image.
Tagging Convention
We tag images based on the version of the wiki package included in the image and a revision number for changes to the image itself.
The tag format is X.Y.Z-R
, where:
X.Y.Z
is the version of the wiki package (e.g.,0.38.0
).R
is a revision number for changes to the image (e.g.,1
,2
, etc.).
Increment the revision number R
if the wiki package version X.Y.Z
remains the same. If the wiki package version changes, reset R
to 1
.
To make the release process smoother, set the image tag and wiki package version as environment variables:
export WIKI_VERSION=X.Y.Z
export TAG=${WIKI_VERSION}-R
Building the container image
Build the container image for your local platform to test before publishing:
docker buildx build \
--file Containerfile \
--no-cache \
--build-arg WIKI_VERSION=$WIKI_VERSION \
--build-arg TAG=$TAG \
--build-arg SOURCE_COMMIT=$(git rev-parse HEAD) \
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
-t git.coopcloud.tech/wiki-cafe/fedwiki-oci-image:latest \
-t git.coopcloud.tech/wiki-cafe/fedwiki-oci-image:$TAG \
--load .
Note: We build for the local platform only at this stage so we can load the image locally for testing. The multi-platform build will happen during the publishing step.
Tracking versions of wiki modules and verifying the build
This repository includes a WIKI_VERSIONS.txt
file to track the versions of the wiki modules included in the image.
Update this file to verify the build before publishing:
docker run --rm git.coopcloud.tech/wiki-cafe/fedwiki-oci-image:$TAG wiki --version > WIKI_VERSIONS.txt
To verify the build, we can also run the container and visit localhost in a web browser to ensure the wiki is functioning correctly.
docker run --rm -p 3000:3000 git.coopcloud.tech/wiki-cafe/fedwiki-oci-image:$TAG
Then open http://localhost:3000
in your web browser.
Committing, Tagging and Pushing the Release
With the WIKI_VERSIONS.txt
file updated, commit all changes, tag the release, and push everything to the remote repository.
git add -A
git commit -m "Release $TAG"
git tag -a "$TAG" -m "Release $TAG"
git push --atomic origin main "$TAG"
Publishing the container image
After building and verifying the container image locally, push it to the registry.
Note: Due to registry timeout issues with direct --push
during build, we push each tag separately rather than using --push
with buildx.
docker push git.coopcloud.tech/wiki-cafe/fedwiki-oci-image:$TAG
docker push git.coopcloud.tech/wiki-cafe/fedwiki-oci-image:latest