mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-20 21:38:26 +00:00
255 lines
9.6 KiB
YAML
255 lines
9.6 KiB
YAML
name: Legacy
|
|
|
|
on:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '35 22 * * *' # every day @ 22:35
|
|
|
|
permissions:
|
|
id-token: write # for fetching the OIDC token
|
|
contents: read # for actions/checkout
|
|
pull-requests: write # For dflook comments on PR
|
|
|
|
env:
|
|
PULL_COMMENT: |
|
|
|legacy UI changes|<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T1B1-en-legacy_device_test/status.png" width="20px" height="20px" /> [device 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)) <img src="https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/status.png" width="20px" height="20px" /> [main](https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/)([screens](https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/master_diff.html))|
|
|
|-----------------|-----|
|
|
|
|
jobs:
|
|
legacy_firmware:
|
|
name: Firmware
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
coins: [universal, btconly]
|
|
# type: [normal, debuglink]
|
|
type: [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
|
|
strategy:
|
|
matrix:
|
|
coins: [universal, btconly]
|
|
asan: ${{ fromJSON(github.event_name == 'schedule' && '["noasan", "asan"]' || '["noasan"]') }}
|
|
env:
|
|
EMULATOR: 1
|
|
TREZOR_PYTEST_SKIP_ALTCOINS: ${{ matrix.coins == 'universal' && '0' || '1' }}
|
|
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' }}
|
|
- uses: ./.github/actions/ui-comment
|
|
if: ${{ failure() && matrix.coins == 'universal' }}
|
|
|
|
legacy_upgrade_test:
|
|
name: Upgrade test
|
|
runs-on: ubuntu-latest
|
|
needs: legacy_emu
|
|
strategy:
|
|
matrix:
|
|
asan: ${{ fromJSON(github.event_name == 'schedule' && '["noasan", "asan"]' || '["noasan"]') }}
|
|
env:
|
|
TREZOR_UPGRADE_TEST: legacy
|
|
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"
|
|
# see python_test for explanation of _PYTHON_SYSCONFIGDATA_NAME
|
|
- run: nix-shell --arg fullDeps true --run "unset _PYTHON_SYSCONFIGDATA_NAME && cd HWI && poetry install && poetry run ./test/test_trezor.py --model_1 ../legacy/firmware/trezor.elf bitcoind"
|
|
|
|
legacy_ui_main:
|
|
name: UI diff from main branch
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- legacy_device_test
|
|
continue-on-error: true
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: ui-records-*
|
|
merge-multiple: true
|
|
- uses: ./.github/actions/environment
|
|
- 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: "for F in screens_*.tar; do tar xvf $F; done || true"
|
|
- run: nix-shell --run "poetry run python -m tests.ui_tests.reporting master-diff T1"
|
|
- run: |
|
|
mv tests/ui_tests/reports/master_diff .
|
|
if [ "${{ job.status }}" = "success" ]; then
|
|
cp .github/actions/ui-report/success.png master_diff/status.png
|
|
else
|
|
cp .github/actions/ui-report/failure.png master_diff/status.png
|
|
fi
|
|
- name: Upload main branch diff
|
|
run: |
|
|
aws s3 sync --no-progress master_diff s3://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}
|
|
continue-on-error: true
|
|
|
|
legacy_ui_comment:
|
|
name: Post comment with UI diff URLs
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
- run: |
|
|
git fetch origin main
|
|
git diff --quiet origin/main...HEAD -- tests/ui_tests/fixtures.json || echo "FIXTURES_CHANGED=$?" >> $GITHUB_OUTPUT
|
|
id: check-fixtures-changed
|
|
- uses: ./.github/actions/ui-comment
|
|
# TODO: always run if comment already exists
|
|
if: ${{ steps.check-fixtures-changed.outputs.FIXTURES_CHANGED == '1' }}
|
|
|
|
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 --no-progress emulators s3://data.trezor.io/dev/firmware/emu-nightly
|