name: Common on: pull_request: workflow_dispatch: schedule: - cron: '14 23 * * *' # every day @ 23:14 # cancel any previous runs on the same PR concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: crypto_build: name: Crypto library runs-on: ubuntu-latest env: CC: gcc ADDRESS_SANITIZER: 1 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: cachix/install-nix-action@v23 with: nix_path: nixpkgs=channel:nixos-unstable - run: nix-shell --run "poetry install" - run: cp -r crypto crypto_noasan - run: nix-shell --run "poetry run make -C crypto" - run: nix-shell --run "export ADDRESS_SANITIZER=0; poetry run make -C crypto_noasan" - run: mv crypto_noasan/tests/test_check crypto/tests/test_check_noasan - uses: actions/upload-artifact@v4 with: name: crypto-build path: | crypto/tests/aestst crypto/tests/libtrezor-crypto.so crypto/tests/test_check crypto/tests/test_check_noasan crypto/tests/test_openssl retention-days: 7 crypto_test: name: Crypto test needs: [crypto_build] runs-on: ubuntu-latest env: ASAN_OPTIONS: "verify_asan_link_order=0" CK_TIMEOUT_MULTIPLIER: 5 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: cachix/install-nix-action@v23 with: nix_path: nixpkgs=channel:nixos-unstable - run: nix-shell --run "poetry install" - uses: actions/download-artifact@v4 with: name: crypto-build path: crypto/tests - run: chmod +x crypto/tests/* - run: ./crypto/tests/aestst - run: ./crypto/tests/test_check - run: ./crypto/tests/test_openssl 1000 - run: nix-shell --run "cd crypto && ITERS=10 poetry run pytest tests" - run: nix-shell --run "CK_TIMEOUT_MULTIPLIER=20 valgrind -q --error-exitcode=1 ./crypto/tests/test_check_noasan" python_test: name: Python test runs-on: ubuntu-latest env: LC_ALL: C.UTF-8 LANG: C.UTF-8 steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: cachix/install-nix-action@v23 with: nix_path: nixpkgs=channel:nixos-unstable - run: nix-shell --run "poetry install" # Workaround for nixpkgs+tox integration failure which results in: # ModuleNotFoundError: No module named '_sysconfigdata__linux_x86_64-linux-gnu' # The value of _PYTHON_SYSCONFIGDATA_NAME has changed between python 3.7 and 3.8 and with # multiple versions in your environment the older pythons don't seem to work under tox. # When the variable is unset the interpreter seems to do the right thing. Can be removed in # july 2023 when python 3.7 is EOLed. # See also: # https://github.com/NixOS/nixpkgs/blob/b00c7c2d1d905eb63c81a0917f1a94b763a7843b/pkgs/development/interpreters/python/cpython/default.nix#L103 # https://github.com/NixOS/nixpkgs/pull/98915 # LD_LIBRARY_PATH workaround: https://discourse.nixos.org/t/nixpkgs-nixos-unstable-many-package-fail-with-glibc-2-38-not-found/35078 https://github.com/NixOS/nixpkgs/issues/287764 - run: nix-shell --arg fullDeps true --run "unset _PYTHON_SYSCONFIGDATA_NAME && unset LD_LIBRARY_PATH && cd python && poetry run tox" python_support_test: name: Python support test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: cachix/install-nix-action@v23 with: nix_path: nixpkgs=channel:nixos-unstable - run: nix-shell --run "poetry install" - run: nix-shell --run "poetry run make python_support_check" storage_test: name: Storage test # TODO: only for changes in storage/ runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: cachix/install-nix-action@v23 with: nix_path: nixpkgs=channel:nixos-unstable - run: nix-shell --run "poetry install" - run: unset PYTEST_TIMEOUT - run: nix-shell --run "poetry run make -C storage/tests build" - run: nix-shell --run "poetry run make -C storage/tests tests_all"