mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-22 14:28:07 +00:00
ci: create emualtor release workflow for release versions
This commit is contained in:
parent
6de0e5de0f
commit
6676dd3b57
203
.github/workflows/release-emu.yml
vendored
Normal file
203
.github/workflows/release-emu.yml
vendored
Normal file
@ -0,0 +1,203 @@
|
||||
name: "[Release] emulators for trezor-user-env"
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'core/v*'
|
||||
- 'legacy/v*'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
id-token: write # for fetching the OIDC token
|
||||
contents: read # for actions/checkout
|
||||
|
||||
jobs:
|
||||
get_models:
|
||||
name: Get models
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
models: ${{ steps.get_models.outputs.models }}
|
||||
version: ${{ steps.get_models.outputs.version }}
|
||||
steps:
|
||||
- name: Get models from releases.json
|
||||
id: get_models
|
||||
run: |
|
||||
if [[ $GITHUB_REF == refs/tags/core/* ]]; then
|
||||
VERSION=${GITHUB_REF#refs/tags/core/v}
|
||||
MODELS=$(jq -r --arg version "$VERSION" '.firmware[$version] | join(",")' common/releases.json)
|
||||
elif [[ $GITHUB_REF == refs/tags/legacy/* ]]; then
|
||||
VERSION=${GITHUB_REF#refs/tags/legacy/v}
|
||||
MODELS=$(jq -r --arg version "$VERSION" '.firmware[$version] | join(",")' common/releases.json)
|
||||
fi
|
||||
echo "models=$MODELS" >> $GITHUB_OUTPUT
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
core_emu:
|
||||
if: startsWith(github.ref, 'refs/tags/core/v')
|
||||
name: Build emu
|
||||
needs: get_models
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
model: ${{ fromJson(needs.get_models.outputs.models) }}
|
||||
coins: [universal]
|
||||
type: [debuglink]
|
||||
asan: [noasan]
|
||||
exclude:
|
||||
- type: normal
|
||||
asan: asan
|
||||
env:
|
||||
TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || 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@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: ./.github/actions/environment
|
||||
- run: nix-shell --run "poetry run make -C core build_bootloader_emu"
|
||||
if: matrix.coins == 'universal'
|
||||
- run: nix-shell --run "poetry run make -C core build_unix_frozen"
|
||||
- run: cp core/build/unix/trezor-emu-core core/build/unix/trezor-emu-core-${{ matrix.model }}-v${{ needs.get_models.outputs.version }}
|
||||
|
||||
- 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
|
||||
|
||||
- name: Upload emulator binaries
|
||||
run: |
|
||||
aws s3 mv core/build/unix/trezor-emu-core-${{ matrix.model }}-v${{ needs.get_models.outputs.version }} s3://data.trezor.io/dev/firmware/releases/emulators-new/${{ matrix.model}}/
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: core-emu-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }}
|
||||
path: |
|
||||
core/build/unix/trezor-emu-core*
|
||||
core/build/bootloader_emu/bootloader.elf
|
||||
retention-days: 7
|
||||
|
||||
core_emu_arm:
|
||||
if: startsWith(github.ref, 'refs/tags/core/v')
|
||||
name: Build core emu arm
|
||||
needs: get_models
|
||||
runs-on: ubuntu-latest-arm64
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
model: ${{ fromJson(needs.get_models.outputs.models) }}
|
||||
coins: [universal]
|
||||
type: [debuglink]
|
||||
asan: [noasan]
|
||||
exclude:
|
||||
- type: normal
|
||||
asan: asan
|
||||
env:
|
||||
TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || 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@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: ./.github/actions/environment
|
||||
- run: nix-shell --run "poetry run make -C core build_bootloader_emu"
|
||||
if: matrix.coins == 'universal'
|
||||
- run: nix-shell --run "poetry run make -C core build_unix_frozen"
|
||||
- run: mv core/build/unix/trezor-emu-core core/build/unix/trezor-emu-core-${{ matrix.model }}-v${{ needs.get_models.outputs.version }}-arm
|
||||
|
||||
- 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
|
||||
|
||||
- name: Upload emulator binaries
|
||||
run: |
|
||||
aws s3 cp core/build/unix/trezor-emu-core-${{ matrix.model }}-v${{ needs.get_models.outputs.version }}-arm s3://data.trezor.io/dev/firmware/releases/emulators-new/${{ matrix.model}}/
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: core-emu-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }}
|
||||
path: |
|
||||
core/build/unix/trezor-emu-core*
|
||||
core/build/bootloader_emu/bootloader.elf
|
||||
retention-days: 7
|
||||
|
||||
legacy_emu:
|
||||
if: startsWith(github.ref, 'refs/tags/legacy/v')
|
||||
name: Build legacy emu
|
||||
needs: get_models
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
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@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-legacy-T1B1-v${{ needs.get_models.outputs.version }}
|
||||
|
||||
- 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
|
||||
|
||||
- name: Upload emulator binaries
|
||||
run: |
|
||||
aws s3 cp legacy/firmware/trezor-emu-legacy-T1B1-v${{ needs.get_models.outputs.version }} s3://data.trezor.io/dev/firmware/releases/emulators-new/T1B1/
|
||||
|
||||
|
||||
legacy_emu_arm:
|
||||
if: startsWith(github.ref, 'refs/tags/legacy/v')
|
||||
name: Build legacy emu arm
|
||||
needs: get_models
|
||||
runs-on: ubuntu-latest-arm64
|
||||
strategy:
|
||||
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@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-legacy-T1B1-v${{ needs.get_models.outputs.version }}-arm
|
||||
|
||||
- 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
|
||||
|
||||
- name: Upload emulator binaries
|
||||
run: |
|
||||
aws s3 cp legacy/firmware/trezor-emu-legacy-T1B1-v${{ needs.get_models.outputs.version }}-arm s3://data.trezor.io/dev/firmware/releases/emulators-new/T1B1/
|
Loading…
Reference in New Issue
Block a user