1
0
Fork 0
Go to file
Dustin 4f4fd0d6bf ci: Enable ccache for buildroot
I wanted to use a persistent volume for the workspace volume of this
Jenkins pipeline in order to speed up subsequent builds.  Unfortunately,
this feature does not really work well in Jenkins.  Since the agent is
removed when the build completes, and therefore the volume is not
mounted anywhere, Jenkins cannot delete workspaces for deleted jobs.
This means that when feature branches/pull requests are merged, their
workspaces remain on disk forever.

Using the *dynamicPVC* option deletes the entire volume when the job
finishes.  This avoids wasting space, but does not allow subsequent
builds to reuse the workspace.  As a compromise, we can use a persistent
volume for the compiler cache and share it between builds.  Using the
compiler cache is not as effective as keeping the whole build directory,
but it still saves some time.  Also, it works across branches, too.
2022-10-31 12:03:52 -05:00
ci ci: Enable ccache for buildroot 2022-10-31 12:03:52 -05:00
configs ci: Enable ccache for buildroot 2022-10-31 12:03:52 -05:00
.gitignore Initial commit 2022-08-07 10:36:18 -05:00
Config.in Initial commit 2022-08-07 10:36:18 -05:00
README.md Initial commit 2022-08-07 10:36:18 -05:00
external.desc Initial commit 2022-08-07 10:36:18 -05:00
external.mk Initial commit 2022-08-07 10:36:18 -05:00

README.md

Minimal Base Python Container Image

The pythonctnr image contains ONLY the Python runtime, and nothing else. It is suitable for deploying applications written in pure Python, without any external library dependencies. No shell or other OS utilities are included. Just /usr/bin/python3 and the libraries it needs to run.

Building

The contents of the container image are built with buildroot.

make -C ~/src/buildroot O=${PWD}/_build pythonctnr_defconfig
make -C _build

This will produce a rootfs.tar tarball in _build/images, which is then converted to a container image using buildah.

ctnr=$(buildah from scratch)
buildah add ${ctnr} _build/images/rootfs.tar /
buildah commit ${ctnr} pythonctnr:latest

Usage

The container image can be used like any other image, e.g. in a Dockerfile. pip is included, to allow installing Python distribution packages.

FROM pythonctnr

RUN ["/usr/bin/python3", "-m", "pip", "install", "mypkg"]

NOTE: Because there is no shell, the default string form of the RUN instruction does not work. You must use the exec form.