- avoid building all workspace crates with `cargo x build` (only plugins and main binary) - only set the target triple in tests for plugins - add new profile for `cargo x run` to build with optimized dependencies => FAST plugins when developing (thanks [Bevy Book](https://bevyengine.org/learn/book/getting-started/setup/#compile-with-performance-optimizations) for the idea) - use https://github.com/Swatinem/rust-cache to avoid rebuilding dependencies every time in ci - split `Build & Test` job into two so they run in parallel - hopefully improve the flaky tests situation, this also makes the e2e tests run much faster (some tests produced correct snapshots but had some logic errors causing them to loop for much longer than necessary). Add some output to the tests so it is easier to see if something goes wrong. - remove verbose build output from e2e test build
56 lines
1.8 KiB
YAML
56 lines
1.8 KiB
YAML
name: End to End tests
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
test-e2e:
|
|
name: Build generic binary and run tests on it
|
|
runs-on: ubuntu-latest
|
|
environment: cachix
|
|
|
|
services:
|
|
ssh:
|
|
image: ghcr.io/linuxserver/openssh-server
|
|
env:
|
|
PUID: 1001
|
|
PGID: 1000
|
|
TZ: Europe/Vienna
|
|
PASSWORD_ACCESS: true
|
|
USER_PASSWORD: test
|
|
USER_NAME: test
|
|
ports:
|
|
- 2222:2222
|
|
options: -v ${{ github.workspace }}/target:/usr/src/zellij --name ssh
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Add WASM target
|
|
run: rustup target add wasm32-wasi
|
|
- name: Install musl-tools
|
|
run: sudo apt-get install -y --no-install-recommends musl-tools
|
|
- name: Add musl target
|
|
run: rustup target add x86_64-unknown-linux-musl
|
|
#run: cargo install --debug cargo-make
|
|
- uses: Swatinem/rust-cache@v2
|
|
# ensure the target folder exists, otherwise fixtures won't be in the right place
|
|
- name: Create target folder
|
|
run: mkdir -p ${{ github.workspace }}/target
|
|
# we copy this manually into the target folder instead of mounting it because
|
|
# github actions creates the service first, and if it has a mount that is part
|
|
# of your yet unchecked out code, you cannot checkout the code after the mount
|
|
- name: Copy fixtures folder to target
|
|
run: cp -r ${{ github.workspace }}/src/tests/fixtures ${{ github.workspace }}/target
|
|
- name: Restart ssh container
|
|
# we need to do this because otherwise the volume will not be mounted
|
|
# on the docker container, since it was created before the folder existed
|
|
uses: docker://docker
|
|
with:
|
|
args: docker restart ssh
|
|
- name: Test
|
|
run: cargo xtask ci e2e --test
|