image: registry.gitlab.com/satoshilabs/trezor/trezor-firmware/environment variables: SDL_VIDEODRIVER: "dummy" XDG_RUNTIME_DIR: "/var/tmp" .only_changes_core: &only_changes_core only: changes: - ci/**/* - common/**/* - core/**/* - crypto/**/* - python/**/* - storage/**/* - tests/**/* - tools/**/* - vendor/**/* .only_changes_legacy: &only_changes_legacy only: changes: - ci/**/* - common/**/* - crypto/**/* - legacy/**/* - python/**/* - storage/**/* - tests/**/* - tools/**/* - vendor/**/* # Core core fw regular build: stage: build <<: *only_changes_core 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 - pipenv run make sizecheck - cd .. - export VERSION=$(./tools/version.sh core/embed/firmware/version.h) - cp core/build/firmware/firmware.bin trezor-fw-regular-$VERSION-$CI_COMMIT_SHORT_SHA.bin artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - trezor-fw-regular-*.*.*-$CI_COMMIT_SHORT_SHA.bin expire_in: 1 week core fw btconly build: stage: build <<: *only_changes_core variables: BITCOIN_ONLY: "1" script: - cd core - pipenv run make build_firmware - mv build/firmware/firmware.bin build/firmware/firmware-bitcoinonly.bin - cd .. - pipenv run ./tools/check-bitcoin-only core/build/firmware/firmware-bitcoinonly.bin - export VERSION=$(./tools/version.sh core/embed/firmware/version.h) - cp core/build/firmware/firmware-bitcoinonly.bin trezor-fw-btconly-$VERSION-$CI_COMMIT_SHORT_SHA.bin artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - trezor-fw-btconly-*.*.*-$CI_COMMIT_SHORT_SHA.bin expire_in: 1 week core unix regular build: stage: build <<: *only_changes_core script: - cd core - pipenv run make build_unix core unix frozen regular build: stage: build <<: *only_changes_core script: - cd core - pipenv run make build_unix_frozen artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - core/build/unix/micropython - core/src/trezor/res/resources.py expire_in: 1 week core unix frozen btconly build: stage: build <<: *only_changes_core variables: BITCOIN_ONLY: "1" script: - cd core - pipenv run make build_unix_frozen - mv build/unix/micropython build/unix/micropython-bitcoinonly artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - core/build/unix/micropython-bitcoinonly - core/src/trezor/res/resources.py expire_in: 1 week core unix frozen debug build: stage: build <<: *only_changes_core variables: PYOPT: "0" script: - cd core - pipenv run make build_unix_frozen artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" untracked: true expire_in: 1 week build core unix frozen regular darwin: stage: build tags: - darwin when: manual script: - . $HOME/.nix-profile/etc/profile.d/nix.sh - nix-shell --run "cd core && make build_unix_frozen" - mkdir -p TrezorEmu-$CI_COMMIT_SHORT_SHA.app/Contents/{MacOS,libs} - cp -v core/build/unix/micropython TrezorEmu-$CI_COMMIT_SHORT_SHA.app/Contents/MacOS/TrezorEmu-$CI_COMMIT_SHORT_SHA - dylibbundler -of -b -i /usr/lib/system -d TrezorEmu-$CI_COMMIT_SHORT_SHA.app/Contents/libs -x TrezorEmu-$CI_COMMIT_SHORT_SHA.app/Contents/MacOS/TrezorEmu-$CI_COMMIT_SHORT_SHA - mv TrezorEmu-$CI_COMMIT_SHORT_SHA.app trezor-emu-regular-macos-$VERSION-$CI_COMMIT_SHORT_SHA.app allow_failure: true artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - trezor-emu-regular-macos-$VERSION-$CI_COMMIT_SHORT_SHA.app expire_in: 1 week # Crypto crypto build: stage: build only: changes: - ci/**/* - crypto/**/* script: - cd crypto - pipenv run make artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - crypto/tests/aestst - crypto/tests/libtrezor-crypto.so - crypto/tests/test_check - crypto/tests/test_openssl expire_in: 1 week # Legacy # TODO: add clang https://github.com/trezor/trezor-firmware/issues/44 legacy fw regular build: stage: build <<: *only_changes_legacy variables: MEMORY_PROTECT: "0" script: - cd legacy - pipenv run script/cibuild - pipenv run make -C bootloader - pipenv run make -C demo - cd .. - export VERSION=$(./tools/version.sh legacy/firmware/version.h) - mv legacy/firmware/trezor.bin trezor-fw-regular-$VERSION-$CI_COMMIT_SHORT_SHA.bin artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - trezor-fw-regular-*.*.*-$CI_COMMIT_SHORT_SHA.bin expire_in: 1 week legacy fw debug build: stage: build <<: *only_changes_legacy variables: DEBUG_LINK: "1" MEMORY_PROTECT: "0" script: - cd legacy - pipenv run script/cibuild legacy fw btconly build: stage: build <<: *only_changes_legacy variables: BITCOIN_ONLY: "1" MEMORY_PROTECT: "0" script: - cd legacy - pipenv run script/cibuild - mv firmware/trezor.bin firmware/trezor-bitcoinonly.bin - cd .. - pipenv run ./tools/check-bitcoin-only legacy/firmware/trezor-bitcoinonly.bin - export VERSION=$(./tools/version.sh legacy/firmware/version.h) - mv legacy/firmware/trezor-bitcoinonly.bin trezor-fw-btconly-$VERSION-$CI_COMMIT_SHORT_SHA.bin artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - trezor-fw-btconly-*.*.*-$CI_COMMIT_SHORT_SHA.bin expire_in: 1 week legacy emu regular build: stage: build <<: *only_changes_legacy variables: DEBUG_LINK: "1" EMULATOR: "1" script: - cd legacy - pipenv run script/cibuild artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - legacy/firmware/trezor.elf expire_in: 1 week legacy emu btconly build: stage: build <<: *only_changes_legacy variables: BITCOIN_ONLY: "1" DEBUG_LINK: "1" EMULATOR: "1" script: - cd legacy - pipenv run script/cibuild - mv firmware/trezor.elf firmware/trezor-bitcoinonly.elf artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" paths: - legacy/firmware/trezor-bitcoinonly.elf expire_in: 1 week