Commit Graph

22 Commits

Author SHA1 Message Date
11ffd8311f ci: Increase ephemeral data storage
All checks were successful
Aimee OS/container-images/pipeline/head This commit looks good
Building the container image now fails with only 10 GiB of space...
2025-01-05 16:05:01 -06:00
dd55d58e8f ci: Mount ephemeral volume for container storage
Some checks failed
Aimee OS/container-images/pipeline/head There was a failure building this commit
Without a specific volume mount, the Buildah working container will be
stored in the Jenkins pod container filesystem.  This not only affects
performance, but limits the size of the working container filesystem and
the final image, as the worker nodes do not have very much space for
container filesystems.  Thus, we need to mount an ephemeral Longhorn
volume in the job pod to provide more space to Buildah.

Using a read-only root filesystem helps ensure that no temporary data
get written to container storage.  This of course breaks the work-around
we had in place for overriding the broken default `storage.conf` in the
_buildah_ image, so we mount a _tmpfs_ filesystem at `/home/build` as a
different work-around.
2025-01-04 07:02:37 -06:00
486322eea1 Use build/rust-cross image
Some checks reported errors
Aimee OS/container-images/pipeline/head Something is wrong with the build of this commit
The _build/cross_ image no longer contains a Rust toolchain.  The
_build/rust-cross_ is layerd on top of _build/cross_ and includes a
cross-compiling toolchain for Rust.
2024-12-22 12:25:45 -06:00
9c78ac71ee Fix parsing arguments
All checks were successful
Aimee OS/container-images/pipeline/head This commit looks good
Infinite loop much?
2024-12-21 17:11:01 -06:00
ec9ccd6b3b split-repo: Populate build branch
Some checks failed
Aimee OS/container-images/pipeline/head There was a failure building this commit
In order to create multiple Jenkins build pipelines for this repository,
I'm splitting it up with branches.  There will be a branch for each
image:

* base/main: The base image
* cross/main: The image with a cross-compiler toolchain
* build/main: The final build image

Note _/main_ in each name.  The intent here is to be able to have
different "sub-branches" for each image, so e.g. there might be a
_base/dev_.

In addition to the branches for each image, there will be branches for
the shared library code as well, named like _lib/main_.  The image
branches will checkout this branch using `git worktree`.
2024-12-21 15:21:00 -06:00
c3418b96e7 portage: Set USE=-nls globally
A recent update to the Gentoo repo as introduced a circular dependency
between _m4_ and _gettext_.  We can avoid it by setting `USE=-nls`.
This is OK because we don't need i18n in the build environment.
2024-12-14 17:37:40 -06:00
5d730ee0e6 lib/crossdev: Do not update when installing
This usually results in a broken dependency graph that has to be
resolved by rebuilding the base layer.
2024-12-14 17:37:40 -06:00
961cb0078c lib: Disable emerge color
Although Jenkins is supposed to be able to decode ANSI escape sequences
for terminal colors, it doesn't do so in all cases and when it does, it
doesn't seem to produce the right result for output from `emerge`.
2024-12-14 17:37:25 -06:00
9377c9423c ci: Fix file ownership before archiving
Several log files in `/var/log` are owned by users other than root.
From outside the user namespace, these files are inaccessible to the
unprivileged user, so we need to change their ownership before we can
archive them.
2024-12-14 14:17:33 -06:00
c1badb2d1e cross: Fix parsing arguments
Infinite loop much?
2024-12-14 14:17:33 -06:00
d79bf8526e ci: Archive logs from /var/log too
When `crossdev` fails, we need to read the logs it put in `/var/log`.
2024-12-14 14:17:33 -06:00
b7fdaa93ac ci: Set resource requests/limits
Some checks failed
Aimee OS/container-images/pipeline/head There was a failure building this commit
Use the whole node to prevent interference from other processes causing
e.g. OOM conditions.
2024-12-14 11:25:20 -06:00
a67ed592df tools: Install tini
During development, we leave a container running and `exec` into it
to run multiple commands.  To keep the container running, we need a PID
1 process that never terminates, which we achieved previously with
Python.  This technically works, but ultimately leaves a lot of zombie
processes.  If we use a "true" init process for PID 1, it will clean
these up.
2024-12-14 09:45:50 -06:00
3f136a4ad1 crossdev: Build a cross toolchain for Rust
To cross-compile Rust packages, we need a standard library compiled for
the target system.
2024-12-14 09:41:35 -06:00
aaed7211b2 build: Install QEMU
Some checks failed
Aimee OS/container-images/pipeline/head There was a failure building this commit
Although most software can be cross-compiled, there are quite a few edge
cases where executables built for the target system need to be run on
the build host.  Notably, `ldconfig` only considers libraries for the
same machine type as the tool itself, so it's impossible to run it in a
cross-compiled root.  In order to get passed these situations, we can
use QEMU in user mode to emulate the target architecture, allowing ARM
executables to run on AMD64 machines.
2024-12-12 18:02:16 -06:00
19068af38c ci: Push: Publish all images
All checks were successful
Aimee OS/container-images/pipeline/head This commit looks good
The _build/cross-{target}_ image only includes the crossdev toolchain.
What we really need is the _build/build-{target}_ image, which contains
all the tools necessary to build an Aimee OS project.
2024-12-09 08:59:32 -06:00
20916b48c6 ci: Persist build logs
All checks were successful
Aimee OS/container-images/pipeline/head This commit looks good
2024-12-08 10:59:30 -06:00
f99176abf3 tools: emerge shadow first
_sys-apps/shadow_ needs to be installed explicity, otherwise all
_acct-user/*_ and _acct-group/*_ packages will fail to install.
2024-12-08 10:59:30 -06:00
c13a44c6bf common: Persist binary packages between runs 2024-12-08 10:59:30 -06:00
15fbb180d0 ci: Begin Jenkins build pipeline 2024-12-08 10:59:30 -06:00
65988b0c32 Rework images into three layers
* Base
* Crossdev
* Build

The *Base* layer is bootstrapped from a regular Gentoo stage 3
environment.  The *Build* layer is the primary artifact, and is
"squashed" into a single layer when built.
2024-12-08 10:59:28 -06:00
86330dc292 Initial commit 2024-12-02 21:03:08 -06:00