Commit Graph

23 Commits

Author SHA1 Message Date
Michael Brown cc4a9df971 [ci] Include Secure Boot build artifacts
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-02-11 23:14:30 +00:00
Michael Brown 362b704f83 [ci] Include supported network device list in build artifacts
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-02-05 16:49:45 +00:00
Michael Brown 12b279b4c7 [ci] Include error identifier list in build artifacts
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-02-05 12:18:33 +00:00
Michael Brown aa06a76eb8 [ci] Show rolling release publication URL
Construct and show the URL for the workflow runs that are triggered to
publish the rolling release binaries.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-02-04 16:23:55 +00:00
Michael Brown 59c67e1110 [ci] Run tests on pull requests
The automated tests that are run in the GitHub Actions workflow are
now as comprehensive as those that are run manually.  Run tests on
pull requests as well as pushes, since the results are now
meaningfully informative.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-02-03 19:04:38 +00:00
Michael Brown b05a045b41 [ci] Publish rolling release binaries via https://boot.ipxe.org
The boot.ipxe.org website is now hosted on GitHub Pages and built via
a GitHub Actions workflow.  The rolling release binaries are fetched
from the build artifacts created by this repository.

Remove the rolling release tag mechanism, and instead trigger a
workflow run on the boot.ipxe.org repository to publish the updated
binaries.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-02-01 23:05:40 +00:00
Michael Brown 74e0551ac2 [ci] Publish rolling release build artifacts with stable URLs
Publish the binaries built from commits on the master branch under
stable URLs such as:

  https://github.com/ipxe/ipxe/releases/download/rolling/bin/undionly.kpxe

Since filenames such as "ipxe.iso" may exist in each of several build
directories, we implement this as one release tag per build directory.
The GitHub Actions workflow automatically moves the tag to the most
recent commit and overwrites the existing release assets.

One downside of this is that running a local "git log" or similar may
show a large number of uninformative tags of the form "rolling/bin",
"rolling/bin-x86_64-efi", "rolling-arm64-efi", etc, all pointing at
the most recent commit.  This clutter may be hidden using:

  git config --local log.excludeDecoration refs/tags/rolling/*

To avoid the unintentional creation of rolling release tags on forks,
we skip the whole publication job unless the environment variable
ROLLING_PREFIX is defined.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-01-30 00:03:35 +00:00
Michael Brown e855c4c642 [ci] Produce combined BIOS/UEFI ISO and USB images
Use util/genfsimg to combine the 64-bit BIOS and all UEFI builds into
a single multi-architecture image in both ISO and USB formats.

Include an editable autoexec.ipxe script (that matches the default
iPXE behaviour) in the USB image, so that users can just mount and
edit this file.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-01-29 14:51:35 +00:00
Michael Brown 8e10974c8c [ci] Upload a selection of build artifacts from each run
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-01-28 20:44:04 +00:00
Michael Brown d0ea2b1bb8 [ci] Use prebuilt containers to build and test iPXE
Use the prebuilt containers from https://github.com/ipxe/ipxe-builder
to build BIOS, SBI, UEFI, and Linux userspace versions of iPXE for all
supported CPU architectures, and to run the Linux userspace test suite
(via valgrind or qemu as applicable).

This reduces the time taken for GitHub CI runs by around 80%, while
increasing the build coverage to include RISC-V SBI, RISC-V UEFI, and
LoongArch64 UEFI, and increasing the test coverage to include running
the Linux userspace test suite on all supported CPU architectures.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-01-25 15:52:16 +00:00
Michael Brown faa42c8503 [build] Do not use "git describe" to construct version number
Using "git describe" to automatically construct the version number has
caused more problems than it has solved.  In particular, it causes
errors when building from a shallow clone of the repository, which is
a common scenario in modern automated build environments.

Define the base version number (currently 1.21.1+) as a set of
hardcoded constants within the Makefile, to be updated whenever a
release is made.

It is extremely useful to have the git commit ID present in the
startup banner.  End users tend to provide screenshots of failures,
and having the commit ID printed at startup makes it trivial to
identify which version of the code is in use.  Identify the git
version (if building from a git tree) by directly reading from
.git/HEAD and associated files.  This allows the git commit ID to
potentially be included even if the build environment does not have
the git tools installed.

Use the default shallow clone in the GitHub Actions workflow, since we
no longer require access to the full commit history.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-01-21 22:44:13 +00:00
Michael Brown 6eab3dbcd2 [ci] Update to ubuntu-24.04 GitHub actions runner
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2026-01-17 18:47:22 +00:00
Michael Brown f5467d69db [github] Extend sponsorship link
Add Christian Nilsson <nikize@gmail.com> as a project sponsorship
recipient, to reflect the enormous amount of time invested in
responding to issues and pull requests.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2025-08-06 13:31:00 +01:00
Michael Brown 4262328c13 [github] Add sponsorship link
iPXE is released under the GNU GPL and is 100% open source software.
There are no "premium editions", no in-app advertisements, and no
hidden costs.  The fully public version published to GitHub is and
always will be the definitive and only version of iPXE.

Many large features in iPXE have been commercially funded within this
open source model, with features being published upstream as soon as
they are complete and made available for the whole world to use, not
restricted for use only by the customer funding that particular piece
of development work.

There has not to date been any funding model for smaller pieces of
work, such as occasional code review or guaranteed attention to bug
reports.  The overhead of establishing a commercial relationship is
usually too high to be worthwhile for very small units of work.

The GitHub sponsorship mechanism provides a framework for efficiently
handling small commercial requests (or individual tokens of thanks).
Add a FUNDING.yml file to provide a convenient way for anyone who
wants to support the ongoing open source development of iPXE to do so.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2025-06-26 16:33:58 +01:00
Michael Brown 226531ed36 [ci] Update action versions to silence GitHub warnings
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2024-03-07 23:25:35 +00:00
Michael Brown d27cd8196d [ci] Work around Ubuntu packaging metadata issues
The libc6-dbg:i386 package has spontaneously started failing to
install from the Azure package repositories used by the GitHub Actions
runners, with the somewhat recalcitrant error message:

 libc6:i386: Depends: libgcc-s1:i386 but it is not going to be installed

Work around this unexplained issue by explicitly requesting
installation of the libgcc-s1:i386 package.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2023-05-15 14:56:28 +01:00
Michael Brown bfa5262f0e [ci] Cache downloaded packages for GitHub actions
Speed up the "Install packages" step for each CI run by caching the
downloaded packages in /var/cache/apt.

Do not include libc6-dbg:i386 within the cache, since apt seems to
complain if asked to download both gcc-aarch64-linux-gnu and
libc6-dbg:i386 at the same time.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2023-02-06 19:59:04 +00:00
Michael Brown 6c0335adf6 [ci] Update to ubuntu-22.04 GitHub actions runner
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2023-02-03 20:08:16 +00:00
Michael Brown 49c13e81bc [ci] Update to actions/checkout@v3 to silence GitHub warnings
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2023-02-03 00:50:16 +00:00
Michael Brown f309d7a7b7 [linux] Use host glibc system call wrappers
When building as a Linux userspace application, iPXE currently
implements its own system calls to the host kernel rather than relying
on the host's C library.  The output binary is statically linked and
has no external dependencies.

This matches the general philosophy of other platforms on which iPXE
runs, since there are no external libraries available on either BIOS
or UEFI bare metal.  However, it would be useful for the Linux
userspace application to be able to link against host libraries such
as libslirp.

Modify the build process to perform a two-stage link: first picking
out the requested objects in the usual way from blib.a but with
relocations left present, then linking again with a helper object to
create a standard hosted application.  The helper object provides the
standard main() entry point and wrappers for the Linux system calls
required by the iPXE Linux drivers and interface code.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-02-28 23:28:23 +00:00
Michael Brown d79f504c0c [ci] Disable redundant scheduled execution of Coverity Scan
The scheduled Coverity Scan run is triggered by an external mechanism
that synchronises the coverity_scan branch with the master branch.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-02-05 11:59:27 +00:00
Michael Brown 1259580dde [ci] Add GitHub action for Coverity Scan
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-02-04 16:41:55 +00:00
Michael Brown eeca29a1e0 [ci] Add GitHub action for build testing
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-02-04 16:41:55 +00:00