mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-13 19:18:56 +00:00
8f0f6e4aed
Artifacts are passed on by default, so we do not have to define them in 'dependencies' when we need them. On the contrary, we define them in case we do not need them.
139 lines
3.5 KiB
YAML
139 lines
3.5 KiB
YAML
variables:
|
|
# Init submodules.
|
|
# See https://docs.gitlab.com/ee/ci/yaml/#git-submodule-strategy
|
|
GIT_SUBMODULE_STRATEGY: "recursive"
|
|
|
|
# Use shallow cloning to speed up git clone. This can fail, if retrying an older build on CI
|
|
# and the old commit is not in the shallow history any more.
|
|
# See https://docs.gitlab.com/ee/ci/yaml/#shallow-cloning
|
|
GIT_DEPTH: "50"
|
|
|
|
# run make paralel
|
|
MAKEFLAGS: "-j10"
|
|
|
|
stages:
|
|
- environment
|
|
- build
|
|
- test
|
|
|
|
environment:
|
|
stage: environment
|
|
image: docker:latest
|
|
variables:
|
|
CONTAINER_NAME: "$CI_REGISTRY/trezor/trezor-firmware/environment"
|
|
services:
|
|
- docker:dind
|
|
before_script:
|
|
- docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
|
|
when: manual
|
|
script:
|
|
- docker pull $CONTAINER_NAME:latest || true
|
|
- docker build --cache-from $CONTAINER_NAME:latest --tag $CONTAINER_NAME:$CI_COMMIT_SHA --tag $CONTAINER_NAME:latest .
|
|
- docker push $CONTAINER_NAME:$CI_COMMIT_SHA
|
|
- docker push $CONTAINER_NAME:latest
|
|
|
|
image: registry.corp.sldev.cz/trezor/trezor-firmware/environment
|
|
|
|
before_script:
|
|
- pipenv install
|
|
|
|
build core firmware:
|
|
stage: build
|
|
script:
|
|
- cd core
|
|
- pipenv run make build_cross
|
|
- pipenv run make build_boardloader
|
|
- pipenv run make build_bootloader
|
|
- pipenv run make build_prodtest
|
|
- pipenv run make build_firmware
|
|
# - test "$TREZOR_MODEL" = "1" || pipenv run make sizecheck
|
|
artifacts:
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
|
|
paths:
|
|
- core/build/firmware/firmware.bin
|
|
- core/build/bootloader/bootloader.bin
|
|
expire_in: 1 week
|
|
|
|
build core unix:
|
|
stage: build
|
|
script:
|
|
- cd core
|
|
- pipenv run make build_unix_noui
|
|
artifacts:
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
|
|
untracked: true
|
|
expire_in: 1 day
|
|
|
|
# TODO: matrix: DEBUG_LINK={0,1}, gcc vs clang
|
|
build legacy:
|
|
stage: build
|
|
variables:
|
|
HEADLESS: "1"
|
|
script:
|
|
- cd legacy
|
|
- pipenv run script/cibuild
|
|
- pipenv run make -C bootloader
|
|
- pipenv run make -C demo
|
|
|
|
test style:
|
|
stage: test
|
|
dependencies: [] # no need to download artifacts
|
|
script:
|
|
- pipenv run make style_check
|
|
- cd core && pipenv run make templates_check # TODO
|
|
|
|
test core unix unit:
|
|
stage: test
|
|
script:
|
|
- cd core
|
|
- pipenv run make test
|
|
|
|
test core unix device:
|
|
stage: test
|
|
script:
|
|
- cd core
|
|
- pipenv run make test_emu
|
|
|
|
test core unix monero:
|
|
stage: test
|
|
script:
|
|
- cd core
|
|
- pipenv run make test_emu_monero
|
|
|
|
test common:
|
|
stage: test
|
|
dependencies: [] # no need to download artifacts
|
|
script:
|
|
- cd common
|
|
- pipenv run jsonlint defs/*.json
|
|
- pipenv run jsonlint defs/*/*.json
|
|
- pipenv run python tools/cointool.py check
|
|
- pipenv run python tools/support.py check --ignore-missing
|
|
- pipenv run python protob/check.py
|
|
- pipenv run python protob/graph.py protob/*.proto # TODO: artifacts?
|
|
|
|
test crypto:
|
|
stage: test
|
|
dependencies: [] # no need to download artifacts
|
|
script:
|
|
- cd crypto
|
|
- pipenv run make
|
|
- ./tests/aestst
|
|
- ./tests/test_check
|
|
- CK_TIMEOUT_MULTIPLIER=20 valgrind -q --error-exitcode=1 ./tests/test_check
|
|
- ./tests/test_openssl 1000
|
|
- ITERS=10 pipenv run pytest tests/ # TODO are ITERS=10 propagated?
|
|
|
|
# TODO: matrix: DEBUG_LINK={0,1}, gcc vs clang
|
|
# TODO add more based on deleted .travis.yml
|
|
test legacy:
|
|
stage: test
|
|
variables:
|
|
HEADLESS: "1"
|
|
EMULATOR: "1"
|
|
DEBUG_LINK: "1"
|
|
script:
|
|
- cd legacy
|
|
- pipenv run script/cibuild
|
|
- pipenv run script/test
|