{"id":18694232,"url":"https://github.com/9elements/firmware-action","last_synced_at":"2025-10-13T11:14:08.491Z","repository":{"id":115521534,"uuid":"593563066","full_name":"9elements/firmware-action","owner":"9elements","description":"Build system for open source firmware (coreboot, linux, EDK2, ...) with unified builds across development and CI environments.","archived":false,"fork":false,"pushed_at":"2025-10-09T00:30:41.000Z","size":1387,"stargazers_count":19,"open_issues_count":20,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-10-09T02:02:40.605Z","etag":null,"topics":["bios","build-system","build-tool","coreboot","edk2","firmware","firmware-development","firmware-tools","linux","linux-kernel","u-boot","u-root","uefi"],"latest_commit_sha":null,"homepage":"https://9elements.github.io/firmware-action/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/9elements.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-26T10:18:33.000Z","updated_at":"2025-10-09T00:30:43.000Z","dependencies_parsed_at":"2024-01-22T12:10:45.917Z","dependency_job_id":"07b87aac-ffd6-4e77-a6d7-0c138b0067c9","html_url":"https://github.com/9elements/firmware-action","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/9elements/firmware-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9elements%2Ffirmware-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9elements%2Ffirmware-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9elements%2Ffirmware-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9elements%2Ffirmware-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/9elements","download_url":"https://codeload.github.com/9elements/firmware-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/9elements%2Ffirmware-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005036,"owners_count":26083827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bios","build-system","build-tool","coreboot","edk2","firmware","firmware-development","firmware-tools","linux","linux-kernel","u-boot","u-root","uefi"],"created_at":"2024-11-07T11:08:50.566Z","updated_at":"2025-10-13T11:14:08.410Z","avatar_url":"https://github.com/9elements.png","language":"Go","readme":"# Firmware-Action\n\n[![Lint](https://github.com/9elements/firmware-action/actions/workflows/lint.yml/badge.svg)](https://github.com/9elements/firmware-action/actions/workflows/lint.yml)\n[![building containers](https://github.com/9elements/firmware-action/actions/workflows/docker-build-and-test.yml/badge.svg)](https://github.com/9elements/firmware-action/actions/workflows/docker-build-and-test.yml)\n[![go test](https://github.com/9elements/firmware-action/actions/workflows/go-test.yml/badge.svg)](https://github.com/9elements/firmware-action/actions/workflows/go-test.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/9elements/firmware-action/cmd/firmware-action)](https://goreportcard.com/report/github.com/9elements/firmware-action/cmd/firmware-action)\n[![codecov](https://codecov.io/gh/9elements/firmware-action/graph/badge.svg?token=FDWKRAJIJ0)](https://codecov.io/gh/9elements/firmware-action)\n\n\n## Description\n\n`Firmware-action` is a tool to simplify building firmware. Think of it as `Makefile` or `Taskfile` but specifically for firmware. The tool it-self is written entirely in [Golang](https://go.dev/).\n\nMotivation behind the creation is to unify building of firmware across development environments. The goal of `firmware-action` is to run on your local machine but also in your CI/CD pipeline, with the same configuration producing the same output.\n\nThere is also an independent python tool to prepare Docker containers to be used with `firmware-action`. These are hosted on GitHub and are freely available (no need to build any Docker containers yourself).\n\nThere is also a GitHub action integration allowing you to use `firmware-action` in your GitHub CI/CD.\n\nAt the moment `firmware-action` has modules to build:\n- [coreboot](https://coreboot.org/)\n- [linux](https://www.kernel.org/)\n- [tianocore / edk2](https://www.tianocore.org/)\n- firmware stitching (populating IFD regions with binaries)\n- [u-root](https://github.com/u-root/u-root)\n- [u-boot](https://docs.u-boot.org/en/latest/index.html)\n- universal module (run arbitrary commands in arbitrary Docker container)\n\nThis list should expand in the future (see [issue 56](https://github.com/9elements/firmware-action/issues/56)).\n\n`Firmware-action` is using [dagger](https://docs.dagger.io/) under the hood, which makes it a rather versatile tool. When `firmware-action` is used, it automatically downloads user-specified Docker containers in which it will attempt to build the firmware.\n\nIf your firmware consists of multiple components, such as `coreboot` with `linux` as the payload, you can simply define each as a module and define dependency between them. Each module is built separately, but can use the output of another module as input. In the `coreboot` + `linux` example, you can call `firmware-action` to build `coreboot` recursively, which will also build `linux` due to the dependency definition. This way, you can build complex stacks of firmware in a single call.\n\n[Documentation is hosted in pages](https://9elements.github.io/firmware-action/).\n\nThere is a standalone repository with usage examples at [firmware-action-example](https://github.com/9elements/firmware-action-example).\n\nPre-compiled coreboot toolchains for docker containers are stored in separate directory [firmware-action-toolchains](https://github.com/9elements/firmware-action-toolchains).\n\n\n## Containers\n\nWe maintain multiple containers that can be freely used with `firmware-action`. They are hosted both in [GitHub registry](https://github.com/orgs/9elements/packages?repo_name=firmware-action) as well as in [DockerHub](https://hub.docker.com/u/9elementscyberops).\n\nDockerHub registry contains only releases, while GitHub registry contains also containers build on `main` branch.\n\nHere is a list of all containers:\n\n| Container            | Maintained | Note                                       |\n| -------------------- | ---------- | ------------------------------------------ |\n| coreboot_4.19        | [x]        |                                            |\n| coreboot_4.20        | [ ]        | discontinued in favor of `4.20.1`          |\n| coreboot_4.20.1      | [x]        |                                            |\n| coreboot_4.21        | [x]        |                                            |\n| coreboot_4.22        | [ ]        | discontinued in favor of `4.22.1`          |\n| coreboot_4.22.01     | [x]        |                                            |\n| coreboot_24.02       | [ ]        | discontinued in favor of `24.02.01`        |\n| coreboot_24.02.01    | [x]        |                                            |\n| coreboot_24.05       | [x]        |                                            |\n| coreboot_25.03       | [x]        |                                            |\n| udk2017              | [x]        |                                            |\n| edk2-stable202008    | [x]        |                                            |\n| edk2-stable202105    | [x]        |                                            |\n| edk2-stable202111    | [x]        |                                            |\n| edk2-stable202205    | [x]        |                                            |\n| edk2-stable202208    | [x]        |                                            |\n| edk2-stable202211    | [x]        |                                            |\n| edk2-stable202302    | [x]        |                                            |\n| edk2-stable202305    | [x]        |                                            |\n| edk2-stable202308    | [x]        |                                            |\n| edk2-stable202311    | [x]        |                                            |\n| edk2-stable202402    | [x]        |                                            |\n| edk2-stable202405    | [x]        |                                            |\n| edk2-stable202408    | [ ]        | discontinued in favor of `stable202408.01` |\n| edk2-stable202408.01 | [x]        |                                            |\n| edk2-stable202411    | [x]        |                                            |\n| edk2-stable202502    | [x]        |                                            |\n| linux_6.1.111        | [ ]        | discontinued in favor of `linux_6.1`       |\n| linux_6.1.45         | [ ]        | discontinued in favor of `linux_6.1`       |\n| linux_6.1            | [x]        |                                            |\n| linux_6.6.52         | [ ]        | discontinued in favor of `linux_6.6`       |\n| linux_6.6            | [x]        |                                            |\n| linux_6.9.9          | [ ]        | discontinued because not LTS               |\n| linux_6.11           | [ ]        | discontinued because not LTS               |\n| linux_6.12           | [x]        |                                            |\n| uroot_0.14.0         | [x]        |                                            |\n| uboot_2025.01        | [x]        |                                            |\n| uboot_2025.04        | [x]        |                                            |\n\n\n## Legacy containers\n\nThese were created by hand long time ago and since then have been replaced.\n\n| Container                                                                         | Maintained | Note         |\n| --------------------------------------------------------------------------------- | ---------- | ------------ |\n| [coreboot](https://github.com/orgs/9elements/packages/container/package/coreboot) | [ ]        | discontinued |\n| [uefi](https://github.com/orgs/9elements/packages/container/package/uefi)         | [ ]        | discontinued |\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F9elements%2Ffirmware-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F9elements%2Ffirmware-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F9elements%2Ffirmware-action/lists"}