Commit Graph
77 Commits
Author SHA1 Message Date
Richard Alpe 0b8d3307db .github: allow upstream caller to run pre build script
Allow a workflow caller to run pre-build scripts though a workflow
call variable. This is potentially dangerous as code can be injected
here. If for example a malicious actor wants to run there C2 code in
the context of someone else they could perhaps inject it here. I
assume this is protected by the same mecahism as the workflow files
themself. I.e. github users untrusted to the Infix org won't be able
to trigger workflows before being explicitly allowed to do so.

This patch also adds a checkout secret. This allows upstream callers
to fetch there own spin / fork though the infix workflows, if they
provide a checkout token with the correct permissions to do so.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-11-04 10:12:49 +01:00
Joachim Wiberg 2fa495b112 .github: cleanup podman state before each run
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 13:26:09 +01:00
Joachim Wiberg 1ba91236b7 .github: clean up stale containers and ports
Fixes the following issue, see also https://devops.stackexchange.com/a/17853/26590:

make[1]: Entering directory '/home/github-jaffa/actions-runner/_work/infix/infix/buildroot'
/home/github-jaffa/actions-runner/_work/infix/infix/test/env -r -b /home/github-jaffa/actions-runner/_work/infix/infix
/home/github-jaffa/actions-runner/_work/infix/infix/test/9pm/9pm.py -v
/home/github-jaffa/actions-runner/_work/infix/infix/test/case/all-repo.yaml
/home/github-jaffa/actions-runner/_work/infix/infix/test/case/all-unit.yaml
Error: rootlessport conflict with ID 1
make[1]: *** [/home/github-jaffa/actions-runner/_work/infix/infix/test/test.mk:58: test-unit] Error 126
make[1]: Leaving directory '/home/github-jaffa/actions-runner/_work/infix/infix/buildroot'
make: *** [Makefile:31: test-unit] Error 2

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-02 17:02:42 +02:00
Joachim Wiberg 5cd9197fa8 .github: re-enable massive parallel build
Fixes #1152

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-02 10:30:14 +02:00
Richard Alpe 7244fad2e8 .github: include flavor in target
There are 2 main reasons for this:

1) It's almost impossible to write complex logical expressions in GH
workflows. I wanted to pass "" as flavor when not building _minimal.
So that the end target string would become TARGET + FLAVOR where
FLAVOR is empty, making it x86_64 for example.

As it turns out "" is false in GH workflow logical expressions, this
in conjunction with the limitations the interpreter has made it hard
to actually write sane expressions in the "with:" variables when
calling downstream jobs via workflow calls.

Here's an example of what I was trying to do and could not:

with:
  flavor: ${{ (
    github.event_name == 'pull_request' &&
    contains(github.event.pull_request.labels.*.name, 'ci:main')
  ) && '' || '_minimal' }}

As '' is false, the first sets of expressions always evaluates to
false making the string "_minimal". I tried bracing this in various
ways and to use "null" or various JSON objects, all in vain.

2) It reduces complexity instead of adding additional.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-08-26 14:37:13 +02:00
Richard Alpe 99af0ba0e5 .github: fix parallel selection for workflow call
Signed-off-by: Richard Alpe <richard@bit42.se>
2025-08-11 08:32:44 +02:00
Joachim Wiberg 9d912446a7 doc: initial support for MkDocs Material framework
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-07-30 14:57:57 +02:00
Richard Alpe fc0a68a18a .github: add name and target parameter to dispatch build
Signed-off-by: Richard Alpe <richard@bit42.se>
2025-07-29 09:26:28 +02:00
Richard Alpe ea2627d4f6 .github: remove explicit required from build dispatch
Reduce number of lines. Required = false is the default.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-07-29 08:36:00 +02:00
Richard Alpe 21321f0196 .github: allow upstream workflow caller to set parallel
Signed-off-by: Richard Alpe <richard@bit42.se>
2025-07-29 08:03:56 +02:00
Richard Alpe 45c588567d .github: fix parallel typo in dispatch
Fixes: 874c0a54 Use massive parallel in workflow for PRs

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-07-09 10:42:40 +02:00
Richard Alpe 9845e3b0c7 .github: make flavor selection into a env option 2025-07-07 09:53:00 +02:00
Richard Alpe 08e6833266 .github: allow repo checkout override
Needed when called by spins inside different organizations.
2025-07-07 09:52:59 +02:00
Richard Alpe df54982978 .github: simplify flavor selection 2025-07-07 09:52:58 +02:00
Richard Alpe efd6cce842 .github: pass (Infix) name as workflow_call input
Signed-off-by: Richard Alpe <richard@bit42.se>
2025-07-07 09:52:57 +02:00
Richard Alpe 1dc84af095 .github: use workflow calls to build and test
Redesign how GH actions are triggered. This new design uses a
self-trigger to start jobs which are only started via workflow_calls.

The main benefit of this is to be able to start workflows from various
Infix Spins without needing to duplicate the workflow files in them.

Upcoming patches are intended to parameterize to allow Spins to pass
different architectures, brand names and such.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-07-07 09:52:55 +02:00
Mattias Walström 874c0a54c4 Use massive parallel in workflow for PRs
This to get quick turnaround development -> test when
doing PRs main branch builds and release builds are still
build sequentially.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2025-05-13 08:02:16 +02:00
Joachim Wiberg c5c21dec83 .github: preserve symlinks in tarballs
Fixes #991

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-03-28 11:15:49 +01:00
Richard Alpe f389a1f087 .github: don't shallow-clone main project
The test report needs to lookup the last tag.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-02-04 09:40:11 +01:00
Richard Alpe de9b1cdd2d CI: Generate and publish 9pm test report
Signed-off-by: Richard Alpe <richard@bit42.se>
2025-01-21 15:02:07 +01:00
Tobias Waldekranz 89c5b67a13 .github: Set more informative build id on PR builds 2024-12-05 13:10:42 +01:00
Mattias WalströmandJoachim Wiberg 3e2b9fbd5e Build test specification on build
Also include the test specification in release tarballs.
2024-09-25 17:26:40 +02:00
Joachim Wiberg 56a12d13c4 .github: show size of resulting build tree
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-05 07:04:58 +02:00
Joachim Wiberg ba1143cf9b .github: allow defconfig control using manual dispatch
Issue #597

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-05 07:04:58 +02:00
Joachim Wiberg 7ddef25013 .github: control defconfig using pull request labels
Issue #597

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-05 07:04:58 +02:00
Joachim Wiberg 89f6a8f0fb .github: derive build flavor from branch name
Always build the minimal flavor for branches != main, otherwise use the
default defconfigs so latest build has the correct image.

Issue #597

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-05 07:04:58 +02:00
Joachim Wiberg fb96888538 .github: switch default builds to minimal defconfigs
Issue ##597

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-09-05 07:04:58 +02:00
Joachim WibergandMattias Walström 04d7729de8 .github: attempt build folder cleanup
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-29 16:29:44 +02:00
Joachim Wiberg ccd2b155b2 .github: check 'make legal-info' for all builds
A fairly quick step that runs for all build targets, likely saving us a
lot of time for release weeks.

Fixes #574

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-08-28 19:14:47 +02:00
Joachim Wiberg 269c0f2b00 .github: generate checksum files also for latest build
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-06-28 14:49:25 +02:00
Joachim Wiberg 8fdd147d1e .github: ignore any existing output/ directory
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-05-24 17:40:36 +02:00
Joachim Wiberg f29ad88b16 .github: set up build env. for 'make test'
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-05-24 17:00:15 +02:00
Joachim Wiberg 3f36c4541d .github: drop make from configure step and fix test
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-05-24 15:41:05 +02:00
Joachim Wiberg 9f8b27ae4a .github: split build and test in separate jobs
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-05-24 14:43:05 +02:00
Joachim Wiberg b5af266953 .github: simplify build and regression testing
Now that Reggie builds all supported archs there is no point in keeping
two separate (and now very similar) workflows.  So we've decided to lay
off Reggie and let Bob, who has seniority, take over Reggie's tasks.

This simplification also means that jobs will no longer be started on
push to branches, only pull requests.  For half-baked branches a draft
pull request can be used to auto-start builds, if needed.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-05-24 13:23:16 +02:00
Joachim Wiberg c7c1b5b12d .github: build aarch64 target as well in regression workflow
- Add aarch64 to build matrix on Reggie
 - Rename platform -> target in all workflows

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-05-21 10:10:16 +02:00
Joachim Wiberg 3ac1dfbf4c .github: ensure clean and recursive submodules
Minor change, mostly for consistency across repos.

[skip ci]

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-05-17 14:38:57 +02:00
Joachim WibergandTobias Waldekranz d1a7e1d744 .github: revert massive-parallel builds and select new runners
The massive-parallel build change added recently is a bit shaky still,
so while we stabilze that, we revert it and also take the oppportunity
to tag the new build server.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-04-29 08:44:44 +02:00
Joachim WibergandTobias Waldekranz 286d5e9c0d .github: cleanup and minor changes for consistency.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-04-29 08:44:44 +02:00
Joachim Wiberg b5c0bfea62 .github: relocate all builds to self-hosted runners
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-04-25 09:20:32 +02:00
Joachim Wiberg 493be97769 Drop legacy Classic builds
The Classic builds served for a while as an introduction to classic
embedded systems, with a user managed read-writable /etc.  Today we
decided to firmly take the plunge into the future with NETCONF and
focus on our core platforms aarch64 and x86_64 (for Qemu).

The reasons are several: reduce overhead, simplify build and release
work, as well as manual testing, since Classic builds do not have any
automated regression testing.

The Classic builds may be resurrected later in a dedicated project.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-04-11 06:19:07 +02:00
Joachim Wiberg b449b7ea82 Revert ".github: temporarily disable Infix Classic builds"
This reverts commit 2bcb02d3ef and thus
reeneables classic builds again.  Since we build on /mnt on the runner
there should be enough room also for them.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-29 12:16:14 +01:00
Joachim Wiberg 75b47b8a7a .github: adapt to new artifact action behavior
No more artifact/ subdirectory with upload/download-artifact v4,
artifacts are already in the working directory.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-29 07:17:24 +01:00
Joachim Wiberg aa039449da .github: fake it, let qemu target build in $HOME
Apparently, running "make test-qeneth" from an output directory that's
not in $HOME does not work in Azure.  This patch adds an exception for
the x86_64-netconf target that ensures regression tests run just as if
nothing had changed.

Other platform//variants will be built on /mnt for the time being since
we're running out of space in the runner:

df -h =================================================================
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        73G   58G   16G  80% /
tmpfs           7.9G  172K  7.9G   1% /dev/shm
tmpfs           3.2G  1.1M  3.2G   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda15      105M  6.1M   99M   6% /boot/efi
/dev/sdb1        74G  4.1G   66G   6% /mnt
tmpfs           1.6G   12K  1.6G   1% /run/user/1001
=======================================================================

This is the output of the new "Manny" investigator, it revealed that we
only have 16 GiB of space, after checkout and cache donwload, to build
and upload *all* platforms/variants.  Hence the cheat with /mnt, which
we honestly don't know will remain mounted on these runners.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-28 20:57:14 +01:00
Joachim Wiberg cd7412aea4 .github: use correct build directory variable
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-28 18:45:56 +01:00
Joachim Wiberg 2564d2597b .github: sudo make me a build directory
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-28 18:42:33 +01:00
Joachim Wiberg cb1054e4a3 .github: use /mnt as output directory for builds
- Clean up any lingering docker images
 - Redirect output to /mnt/$arch-$flavor

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-28 18:39:48 +01:00
Joachim WibergandMattias Walström 2bcb02d3ef .github: temporarily disable Infix Classic builds
Debugging build/runner problems with GitHub Actions.  Resolution pending
self-hosted runner becoming operational.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-28 13:55:57 +01:00
Joachim Wiberg a2bc3bef61 .github: reduce number of caches required by CI builds
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-27 10:08:20 +01:00
Joachim Wiberg a6a480cbf9 .github: add missing $ in variables
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2024-02-02 10:15:13 +01:00