CI-tron: The testing gateway¶
The CI-tron project started in 2020 to provide an easier-to-use infrastructure for bare-metal testing than existing solutions by:
Providing a plug-and-play experience by automating best practices and minimizing manual configuration;
Using containers rather than rootfses for test environments;
Allowing both interactive and CI sessions.
This enables developers and power users to share their local devices, either for development or CI. The project’s documentation is located at https://gfx-ci.pages.freedesktop.org/ci-tron/.
Installation¶
First, get a CI-tron dedicated gateway. To install CI-tron in the gateway, follow the instructions in https://pmos.ci-tron.dev/.
Warning
Due to a bug in CI-tron, it might be possible that the graphical UI boots to an error related to Cage. You can retry by pressing Ctrl+C, only if your gateway has GPU support. This can always be workarounded by logging through SSH to the root user.
After installation, and until integration of the build image is more ready, you
need to modify /config/mars_db.yaml to remove the freedesktop gitlab
instance and add the postmarketOS one like below:
gitlab:
pmos:
expose_runners: true
expose_all_runners_by_default: true
exposed_priorities:
default:
acl: null
url: https://gitlab.postmarketos.org/
registration_token: <set token>
runner_type: project_type
group_id: null
# 226 is postmarketos/pmaports
project_id: 226
access_token: <set token>
maximum_timeout: 21600
You need to set both access_token and registration_token, and can modify
other parameters depending on the access you want to give to your runners. You
can find more details about MarsDB configuration, including the scopes and
permissions to give to the tokens,
here.
Warning
Release 2025-12-08.1 of CI-tron has a bug where postmarketOS PDU gets reset
recurrently and makes using our devices unusable. Unfortunately, release
2026-02-04.1 has been rolled back due to some regressions. If you want to
use CI-tron before a new release is made, you have to clone the
repo and deploy it to your gateway
running make live-provision TARGET=$ip from the root of the repo, where $ip
is the address of the gateway.
Adding devices under test to your gateway¶
Once you followed the previous steps, if your device is already supported (OP6
and OP6T), then it’s as simple as conecting the PDU to the gateway, and then
moving over in the dashboard and clicking DISCOVER. The device should
automatically be detected, start training, and eventually appear as a runner in
gitlab.
If your device is not yet supported, you will need to add support for it to
CI-tron. You can find an example in
https://gitlab.freedesktop.org/gfx-ci/ci-tron/-/merge_requests/1051. You can
do the changes in your CI-tron checkout and then deploy them with
make live-provision TAGS=executor TARGET=$ip, or configure the device directly
in your gateway by creating a /config/boots_db.yml.j2 file with the
corresponding details.