Hardware Continuous Integration¶
The postmarketOS project has support for running CI directly on hardware for specific devices. This has been designed with the following goals in mind:
Ensure reliability of specific functionality on specific devices
Reduce friction for contributions through easier and broader automated testing
Enable long-term crowd sourced / decentralised board farm
Note
This project is still Work-In-Progress, and many of the features might still be unstable. Errors are expected, and interested people are encouraged to contribute to the general development of the infrastructure.
After a previous attempt at building a custom system did not make it production, and some further research, the team decided to use CI-tron as the tool to manage hardware, and provide integration to our current GitLab CI.
Overall architecture¶

There are 4 main components that make up a hardware testing system:
Devices Under Test (DUTs): The devices which we want to test.
Power Deliver Units (PDUs): A piece of hardware that allows controlling the power sequence of the device, and execute physical actions like pressing buttons.
The testing gateway: The main CI-tron component, receives CI jobs from the different projects hosted by gitlab.postmarketos.org, deploys the suitable test environment to DUTs, then deals with the power sequencing, boot sequence, and logs.
PostmarketOS’s GitLab instance: Where the code to be tested, the test definitions, and the CI logic is located.
You can read more about the different components and their usage in their corresponding sections.