Skip to content

Latest commit

 

History

History
305 lines (193 loc) · 15 KB

jobs.md

File metadata and controls

305 lines (193 loc) · 15 KB

CI pipeline

(Generated automatically by tools/generate_ci_docs.py. Do not edit by hand.)

It consists of multiple stages below, each having one or more jobs Latest CI pipeline of master branch can be seen at https://gitlab.com/satoshilabs/trezor/trezor-firmware/-/pipelines/master/latest

ENVIRONMENT stage - environment.yml

Connected with creating the testing image for CI.

Consists of 3 jobs below:

Environment job builds the ci/Dockerfile and pushes the built docker image into our GitLab registry. Since modifications of this Dockerfile are very rare this is a manual job which needs to be triggered on GitLab. Almost all CI jobs run inside this docker image.


PREBUILD stage - prebuild.yml

Static checks on the code.

Consists of 7 jobs below:

Check the code for style correctness and perform some static code analysis. Biggest part is the python one - using flake8, isort, black, pylint and pyright, also checking Rust files by rustfmt and C files by clang-format. Changelogs formats are checked.

Check validity of coin definitions and protobuf files.

Check validity of auto-generated files.

Checking format of .editorconfig files.

All .yml/.yaml files are checked for syntax validity and other correctness.

Checking the format of release commit messages.

Verifying that all commits changing some functionality have a changelog entry or contain [no changelog] in the commit message.


BUILD stage - build.yml

All builds are published as artifacts so they can be downloaded and used.

Consists of 28 jobs below:

Build of Core into firmware. Regular version. Are you looking for Trezor T firmware build? This is most likely it.

Build of Core into firmware with enabled debug mode. In debug mode you can upload mnemonic seed, use debug link etc. which enables device tests. Storage on the device gets wiped on every start in this firmware.

Build of Core into firmware. Bitcoin-only version.

Non-frozen emulator build. This means you still need Python files present which get interpreted.

Build of Core into UNIX emulator. Something you can run on your laptop. Frozen version. That means you do not need any other files to run it, it is just a single binary file that you can execute directly.

Build of Core into UNIX emulator. Something you can run on your laptop. Frozen version. That means you do not need any other files to run it, it is just a single binary file that you can execute directly. See Emulator for more info. Debug mode enabled, Bitcoin-only version.

Build of Core into UNIX emulator. Something you can run on your laptop. Frozen version. That means you do not need any other files to run it, it is just a single binary file that you can execute directly. Are you looking for a Trezor T emulator? This is most likely it.

Build of our cryptographic library, which is then incorporated into the other builds.

Regular version (not only Bitcoin) of above. Are you looking for a Trezor One emulator? This is most likely it.

Build of Legacy into UNIX emulator. Use keyboard arrows to emulate button presses. Bitcoin-only version.


TEST stage - test.yml

All the tests run test cases on the freshly built emulators from the previous BUILD stage.

Consists of 35 jobs below:

Python and rust unit tests, checking TT functionality.

Device tests for Core. Running device tests and also comparing screens with the expected UI result. See artifacts for a comprehensive report of UI. See docs/tests/ui-tests for more info.

Device tests excluding altcoins, only for BTC.

Monero tests.

Tests for U2F and HID.

FIDO2 device tests.

Click tests. See docs/tests/click-tests for more info.

Upgrade tests. See docs/tests/upgrade-tests for more info.

Persistence tests.


TEST-HW stage - test-hw.yml

Consists of 5 jobs below:

Device tests that run against an actual physical Trezor T. The device needs to have special bootloader, found in core/embed/bootloader_ci, that makes it possible to flash firmware without confirmation on the touchscreen.

All hardware tests are run nightly on the master branch, as well as on push to branches with whitelisted prefix. If you want hardware tests ran on your branch, make sure its name starts with hw/.

Currently it's not possible to run all regular TT tests without getting into a state where the micropython heap is too fragmented and allocations fail (often manifesting as a stuck test case). For that reason some tests are skipped. See also: trezor#1371

Also device tests on physical Trezor T but with Bitcoin-only firmware.

Device tests executed on physical Trezor 1. This works thanks to tpmb, which is a small arduino device capable of pushing an actual buttons on the device.

Also device tests on physical Trezor 1 but with Bitcoin-only firmware.


POSTTEST stage - posttest.yml

Consists of 2 jobs below:


DEPLOY stage - deploy.yml

Consists of 14 jobs below: