Move to flakes, add emulator Docker image #16
This file contains 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: "Continuous Integration" | |
on: | |
pull_request: | |
push: | |
jobs: | |
host-packages: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cachix/install-nix-action@v22 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- name: Print nixpkgs version | |
run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version' | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
./target | |
./firmware/target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- run: nix build .#emulator | |
- run: nix build .#model | |
- run: nix build .#gui-simulator | |
- run: nix build .#sdk | |
android-bindings: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cachix/install-nix-action@v22 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- name: Print nixpkgs version | |
run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version' | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
./target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-android | |
- run: nix develop .#android --command bash -c "cd sdk/libportal-android && ./gradlew publishToMavenLocal --exclude-task signMavenPublication" | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: local-maven | |
path: ~/.m2/repository/xyz/twenty-two/libportal-android/ | |
ios-bindings: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cachix/install-nix-action@v22 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- name: Print nixpkgs version | |
run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version' | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
./target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-ios | |
- run: nix develop .#ios --command bash -c "cd sdk/libportal-ios && PACKAGE=1 ./build-local-swift.sh" | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: portalffi-framework | |
path: ./sdk/libportal-ios/portalFFI.xcframework.zip | |
build-firmware: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: [device, emulator] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cachix/install-nix-action@v22 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- name: Print nixpkgs version | |
run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version' | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
./target | |
./firmware/target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- run: nix develop .#embedded --command bash -c "cd firmware && cargo build --no-default-features --features ${{ matrix.target }} --release" | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: firmware-${{ matrix.target }} | |
path: ./firmware/target/thumbv7em-none-eabihf/release/firmware | |
run-firmware-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: cachix/install-nix-action@v22 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
./target | |
./firmware/target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-fw-test | |
- run: nix develop .#embedded --command bash -c "cd firmware && cargo build --no-default-features --features emulator,emulator-fast-ticks --profile=emulator-fast-ticks" | |
- run: nix develop .#embedded --command bash -c "cargo build --package emulator --no-default-features" | |
- run: nix develop .#embedded --command bash -c "REPORT_TMP_DIR=/tmp/portal-test-report RUST_LOG=emulator=trace cargo emu-test -- --nocapture --test-threads 1" | |
timeout-minutes: 10 | |
- uses: actions/upload-artifact@v2 | |
if: always() | |
with: | |
name: test-report | |
path: /tmp/portal-test-report | |