What changed, and why it matters
This commit is a routine cleanup of the GitHub Actions workflow that builds Trezor emulator releases. It removes unused matrix dimensions (like ASan variants), drops environment variables that were no longer needed, changes a default so the bootloader build step is skipped unless explicitly requested, and passes the device model into the build command. There is no change to the firmware code that runs on user devices, no fix for a vulnerability, and no security-relevant behavior change.
No security action required. Treat as normal CI maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies .github/workflows/release-emu.yml and .github/actions/build-core-emu/action.yml. It removes the asan matrix axis and the ADDRESS_SANITIZER/LSAN_OPTIONS environment variables from emulator release jobs, simplifies artifact names accordingly, removes the build-bootloader: true override for universal builds, and changes the build-bootloader input default from ‘true’ to ‘false’. The make invocations now pass TREZOR_MODEL=${{ inputs.model }}. These are CI/release-pipeline simplifications; they do not alter shipped firmware, cryptographic code, or runtime security controls.
Changed components
GitHub Actions workflow: .github/workflows/release-emu.ymlGitHub Actions composite action: .github/actions/build-core-emu/action.ymlInspect captured patch +7 / −39
diff --git a/.github/actions/build-core-emu/action.yml b/.github/actions/build-core-emu/action.yml
index 34585f50..4892ba84 100644
--- a/.github/actions/build-core-emu/action.yml
+++ b/.github/actions/build-core-emu/action.yml
@@ -21,17 +21,17 @@ inputs:
build-bootloader:
description: 'Build bootloader before unix emulator build'
required: false
- default: 'true'
+ default: 'false'
runs:
using: 'composite'
steps:
- uses: ./.github/actions/environment
- - run: nix-shell --run "uv run make -C core build_bootloader_emu"
+ - run: nix-shell --run "uv run make -C core build_bootloader_emu TREZOR_MODEL=${{ inputs.model }}"
if: inputs.build-bootloader == 'true'
shell: sh
- - run: nix-shell --run "uv run make -C core build_unix_frozen"
+ - run: nix-shell --run "uv run make -C core build_unix_frozen TREZOR_MODEL=${{ inputs.model }}"
shell: sh
- id: prepare_binary
diff --git a/.github/workflows/release-emu.yml b/.github/workflows/release-emu.yml
index c6450511..96f57906 100644
--- a/.github/workflows/release-emu.yml
+++ b/.github/workflows/release-emu.yml
@@ -77,16 +77,10 @@ jobs:
model: ${{ fromJson(needs.get_models.outputs.models) }}
coins: [universal]
type: [debuglink]
- asan: [noasan]
- exclude:
- - type: normal
- asan: asan
env:
TREZOR_MODEL: ${{ matrix.model }}
BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }}
PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }}
- ADDRESS_SANITIZER: "0"
- LSAN_OPTIONS: "suppressions=../../asan_suppressions.txt"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # actions/checkout@v6.0.2
with:
@@ -95,8 +89,7 @@ jobs:
with:
model: ${{ matrix.model }}
version: ${{ needs.get_models.outputs.version }}
- artifact-name: core-emu-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }}
- build-bootloader: ${{ matrix.coins == 'universal' }}
+ artifact-name: core-emu-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}
core_emu_arm:
if: startsWith(github.ref, 'refs/tags/core/v') || inputs.project == 'core'
@@ -109,16 +102,10 @@ jobs:
model: ${{ fromJson(needs.get_models.outputs.models) }}
coins: [universal]
type: [debuglink]
- asan: [noasan]
- exclude:
- - type: normal
- asan: asan
env:
TREZOR_MODEL: ${{ matrix.model }}
BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }}
PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }}
- ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }}
- LSAN_OPTIONS: "suppressions=../../asan_suppressions.txt"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # actions/checkout@v6.0.2
with:
@@ -127,9 +114,8 @@ jobs:
with:
model: ${{ matrix.model }}
version: ${{ needs.get_models.outputs.version }}
- artifact-name: core-emu-arm-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }}
+ artifact-name: core-emu-arm-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}
binary-suffix: -arm
- build-bootloader: ${{ matrix.coins == 'universal' }}
core_emu_tropic_capable:
if: startsWith(github.ref, 'refs/tags/core/v') || inputs.project == 'core'
@@ -142,16 +128,10 @@ jobs:
model: ${{ fromJson(needs.get_models.outputs.tropic_models) }}
coins: [universal]
type: [debuglink]
- asan: [noasan]
- exclude:
- - type: normal
- asan: asan
env:
TREZOR_MODEL: ${{ matrix.model }}
BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }}
PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }}
- ADDRESS_SANITIZER: "0"
- LSAN_OPTIONS: "suppressions=../../asan_suppressions.txt"
DISABLE_TROPIC: "0"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # actions/checkout@v6.0.2
@@ -161,9 +141,8 @@ jobs:
with:
model: ${{ matrix.model }}
version: ${{ needs.get_models.outputs.version }}
- artifact-name: core-emu-tropic-capable-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }}
+ artifact-name: core-emu-tropic-capable-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}
s3-subpath: ${{ matrix.model}}_tropic_on/
- build-bootloader: ${{ matrix.coins == 'universal' }}
core_emu_arm_tropic_capable:
if: startsWith(github.ref, 'refs/tags/core/v') || inputs.project == 'core'
@@ -176,16 +155,10 @@ jobs:
model: ${{ fromJson(needs.get_models.outputs.tropic_models) }}
coins: [universal]
type: [debuglink]
- asan: [noasan]
- exclude:
- - type: normal
- asan: asan
env:
TREZOR_MODEL: ${{ matrix.model }}
BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }}
PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }}
- ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }}
- LSAN_OPTIONS: "suppressions=../../asan_suppressions.txt"
DISABLE_TROPIC: "0"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # actions/checkout@v6.0.2
@@ -195,10 +168,9 @@ jobs:
with:
model: ${{ matrix.model }}
version: ${{ needs.get_models.outputs.version }}
- artifact-name: core-emu-arm-tropic-capable-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }}
+ artifact-name: core-emu-arm-tropic-capable-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}
binary-suffix: -arm
s3-subpath: ${{ matrix.model}}_tropic_on/
- build-bootloader: ${{ matrix.coins == 'universal' }}
legacy_emu:
if: startsWith(github.ref, 'refs/tags/legacy/v') || inputs.project == 'legacy'
@@ -210,12 +182,10 @@ jobs:
coins: [universal]
type: [debuglink]
arch: [x86_64]
- 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # actions/checkout@v6.0.2
with:
@@ -234,12 +204,10 @@ jobs:
matrix:
coins: [universal]
type: [debuglink]
- 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # actions/checkout@v6.0.2
with:
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.