Legacy #9235
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Legacy | |
on: | |
pull_request: | |
workflow_dispatch: | |
schedule: | |
- cron: '35 22 * * *' # every day @ 22:35 | |
push: | |
branches: | |
- 'release/**' | |
# cancel any previous runs on the same PR | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
permissions: | |
id-token: write # for fetching the OIDC token | |
contents: read # for actions/checkout | |
pull-requests: write # For dflook comments on PR | |
env: | |
SDL_VIDEODRIVER: dummy | |
# See https://yaml-multiline.info/ | |
PULL_COMMENT: > | |
|legacy UI changes|device test| | |
|-----------------|-----------| | |
|T1B1 Model 1 | |
|<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T1B1-en-legacy_device_test-status.png" width="20px" height="20px" /> | |
[test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T1B1-en-legacy_device_test-index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T1B1-en-legacy_device_test-differing_screens.html)) | |
[main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T1B1-en-legacy_device_test-master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T1B1-en-legacy_device_test-master_diff.html)) | |
| | |
jobs: | |
legacy_firmware: | |
name: Firmware | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
coins: [universal, btconly] | |
type: [normal, debuglink] | |
env: | |
BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} | |
DEBUG_LINK: ${{ matrix.type == 'debuglink' && '1' || '0' }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: ./.github/actions/environment | |
- run: nix-shell --run "export PRODUCTION=1 && poetry run legacy/script/cibuild" | |
- run: nix-shell --run "poetry run legacy/script/setup" | |
- run: nix-shell --run "export PRODUCTION=0 && poetry run legacy/script/cibuild" | |
- run: nix-shell --run "poetry run make -C legacy/demo" | |
if: matrix.coins == 'universal' && matrix.type == 'normal' | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: legacy-firmware-${{ matrix.coins }}-${{ matrix.type }} | |
path: legacy/firmware/firmware-*.bin | |
retention-days: 7 | |
legacy_emu: | |
name: Emulator | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
coins: [universal, btconly] | |
# type: [normal, debuglink] | |
type: [debuglink] | |
arch: [x86_64] | |
asan: ${{ fromJSON(github.event_name == 'schedule' && '["noasan", "asan"]' || '["noasan"]') }} | |
env: | |
EMULATOR: 1 | |
BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} | |
DEBUG_LINK: ${{ matrix.type == 'debuglink' && '1' || '0' }} | |
ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: ./.github/actions/environment | |
- run: nix-shell --run "poetry run legacy/script/cibuild" | |
- run: cp legacy/firmware/trezor.elf legacy/firmware/trezor-emu-legacy-T1B1-${{ matrix.coins }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: legacy-emu-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }} | |
path: | | |
legacy/firmware/*.elf | |
legacy/firmware/trezor-emu-legacy* | |
retention-days: 7 | |
legacy_emu_arm: | |
if: github.event_name == 'schedule' | |
name: Emulator arm | |
runs-on: ubuntu-latest-arm64 | |
strategy: | |
matrix: | |
coins: [universal] | |
type: [debuglink] | |
asan: ${{ fromJSON(github.event_name == 'schedule' && '["noasan", "asan"]' || '["noasan"]') }} | |
env: | |
EMULATOR: 1 | |
BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} | |
DEBUG_LINK: ${{ matrix.type == 'debuglink' && '1' || '0' }} | |
ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: ./.github/actions/environment | |
- run: nix-shell --run "poetry run legacy/script/cibuild" | |
- run: mv legacy/firmware/trezor.elf legacy/firmware/trezor-emu-arm-legacy-T1B1-${{ matrix.coins }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: legacy-emu-arm-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }} | |
path: | | |
legacy/firmware/trezor-emu-arm-legacy* | |
retention-days: 7 | |
legacy_device_test: | |
name: Device test | |
runs-on: ubuntu-latest | |
needs: legacy_emu | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
coins: [universal, btconly] | |
asan: ${{ fromJSON(github.event_name == 'schedule' && '["noasan", "asan"]' || '["noasan"]') }} | |
env: | |
EMULATOR: 1 | |
PYTEST_TIMEOUT: 120 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/download-artifact@v4 | |
with: | |
name: legacy-emu-${{ matrix.coins }}-debuglink-${{ matrix.asan }} | |
path: legacy/firmware | |
- run: chmod +x legacy/firmware/*.elf | |
- uses: ./.github/actions/environment | |
- run: nix-shell --run "poetry run make -C legacy test_emu_ui" | |
if: matrix.coins == 'universal' | |
- run: nix-shell --run "poetry run make -C legacy test_emu" | |
if: matrix.coins != 'universal' | |
- uses: ./.github/actions/ui-report | |
with: | |
model: T1B1 | |
lang: en | |
status: ${{ job.status }} | |
continue-on-error: true | |
if: ${{ always() && matrix.coins == 'universal' }} | |
- run: echo "${{ env.PULL_COMMENT }}" >> $GITHUB_STEP_SUMMARY | |
if: ${{ always() && matrix.coins == 'universal' }} | |
legacy_upgrade_test: | |
name: Upgrade test | |
runs-on: ubuntu-latest | |
needs: legacy_emu | |
timeout-minutes: 10 | |
strategy: | |
matrix: | |
asan: ${{ fromJSON(github.event_name == 'schedule' && '["noasan", "asan"]' || '["noasan"]') }} | |
env: | |
TREZOR_UPGRADE_TEST: legacy | |
PYTEST_TIMEOUT: 120 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/download-artifact@v4 | |
with: | |
name: legacy-emu-universal-debuglink-${{ matrix.asan }} | |
path: legacy/firmware | |
- run: chmod +x legacy/firmware/*.elf | |
- uses: ./.github/actions/environment | |
- run: nix-shell --run "tests/download_emulators.sh" | |
- run: nix-shell --run "poetry run pytest tests/upgrade_tests" | |
legacy_hwi_test: | |
name: HWI test | |
if: false # XXX currently failing | |
continue-on-error: true | |
runs-on: ubuntu-latest | |
needs: legacy_emu | |
env: | |
EMULATOR: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/download-artifact@v4 | |
with: | |
name: legacy-emu-universal-debuglink-noasan | |
path: legacy/firmware | |
- run: chmod +x legacy/firmware/*.elf | |
- uses: ./.github/actions/environment | |
- run: nix-shell --run "git clone --depth=1 https://github.com/bitcoin-core/HWI.git" | |
- run: nix-shell --arg fullDeps true --run "cd HWI && poetry install && poetry run ./test/test_trezor.py --model_1 ../legacy/firmware/trezor.elf bitcoind" | |
legacy_upload_emu: | |
name: Upload emulator binaries | |
if: github.event_name == 'schedule' | |
runs-on: ubuntu-latest | |
needs: | |
- legacy_emu | |
- legacy_emu_arm | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: legacy-emu*debuglink-noasan | |
merge-multiple: true | |
- name: Configure aws credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: arn:aws:iam::538326561891:role/gh_actions_deploy_dev_firmware_data | |
aws-region: eu-west-1 | |
continue-on-error: true | |
- run: | | |
mkdir emulators | |
cp trezor-emu-* emulators | |
aws s3 sync --only-show-errors emulators s3://data.trezor.io/dev/firmware/emu-nightly |