We provide the EDK2 firmware binaries in pc-bios/. When we
update the roms/edk2/ submodule, we need to rebuild the
firmware binaries.
To avoid the burden on a single developer, this series add
a GitLab job to generate reproducible EDK2 firmware binaries.
The job is only on specific conditions:
- roms/edk2/ is updated
- or the branch or tag start with 'edk2'
- or 'edk2' appears in last commit description
We won't use ccache to build the EDK2 firmwares, but the patch
was ready/tested so I'm including it.
The proposed procedure to update the EDK2 submodule is:
- add a commit to update roms/edk2/ submodule
- push to gitlab
- download generated artifacts (only available if job succeed)
- unzip the firmware binaries from the artifacts archive
- test the binaries
- add a commit with the binaries, referencing the ci job url.
Example of pipeline that built the edk2-stable201905 firmwares:
https://gitlab.com/philmd/qemu/pipelines/107553178
(the job is https://gitlab.com/philmd/qemu/-/jobs/395823729)
The first patch is already reviewed, but is a prerequisite to
use the Ubuntu docker image to build, so I included it.
Since v1 [*]
- split in 2 jobs: build docker image, build firmwares
(this way we build the docker image once for all the
subsequent jobs)
- addressed Laszlo comment (minor the 'git-submodule-update)
Regards,
Phil.
[*] https://www.mail-archive.com/qemu-devel@nongnu.org/msg668432.html
Philippe Mathieu-Daudé (3):
roms/edk2-funcs: Force softfloat ARM toolchain prefix on Debian
gitlab-ci.yml: Add jobs to build EDK2 firmware binaries
gitlab-ci-edk2.yml: Use ccache
.gitlab-ci-edk2.yml | 58 ++++++++++++++++++++++++++++++++++++
.gitlab-ci.d/edk2/Dockerfile | 30 +++++++++++++++++++
.gitlab-ci.yml | 3 ++
MAINTAINERS | 4 ++-
roms/edk2-funcs.sh | 3 ++
5 files changed, 97 insertions(+), 1 deletion(-)
create mode 100644 .gitlab-ci-edk2.yml
create mode 100644 .gitlab-ci.d/edk2/Dockerfile
--
2.21.1