Ensure reproducible development and test environment #1317
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: tests | |
on: | |
push: | |
schedule: | |
- cron: '0 2 * * 6' | |
env: | |
RUST_VERSION: "1.68.2" | |
TRUNK_VERSION: "0.17.5" | |
POETRY_VERSION: "1.7.1" | |
POETRY_DYNAMIC_VERSIONING_VERSION: "1.2.0" | |
jobs: | |
check_frontend: | |
name: Frontend Checks | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Rust | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} | |
echo ~/.cargo/bin >> $GITHUB_PATH | |
- name: Install dependencies | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} poetry-dynamic-versioning==${{ env.POETRY_VERSION }} | |
- name: Check | |
run: | | |
make check_frontend | |
check_backend: | |
name: Backend Checks | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.10", "3.11"] | |
target: [black, ruff, mypy] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: poetry | |
- name: Install dependencies | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} poetry-dynamic-versioning==${{ env.POETRY_VERSION }} | |
poetry install | |
- name: Check | |
run: | | |
make check_${{ matrix.target }} | |
test_installation: | |
name: Installation Test | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
python-version: ["3.9", "3.10", "3.11"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: poetry | |
- name: Set up Rust | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} --target wasm32-unknown-unknown --profile minimal | |
echo ~/.cargo/bin >> $GITHUB_PATH | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: frontend | |
- name: Install dependencies | |
run: | | |
sudo apt install libarchive-tools | |
pipx install poetry==${{ env.POETRY_VERSION }} poetry-dynamic-versioning==${{ env.POETRY_VERSION }} | |
cargo install --locked trunk@${{ env.TRUNK_VERSION }} | |
- name: Test | |
run: | | |
make test_installation | |
test_frontend: | |
name: Frontend Tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Rust | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} --profile minimal | |
echo ~/.cargo/bin >> $GITHUB_PATH | |
- name: Check | |
run: | | |
make test_frontend | |
test_backend: | |
name: Backend Tests | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.10", "3.11"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: poetry | |
- name: Install dependencies | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} poetry-dynamic-versioning==${{ env.POETRY_VERSION }} | |
poetry install | |
- name: Test | |
run: | | |
make test_backend | |
test_e2e: | |
name: End-to-End Tests | |
runs-on: ubuntu-20.04 | |
env: | |
python-version: "3.10" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ env.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.python-version }} | |
cache: poetry | |
- name: Set up Rust | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${{ env.RUST_VERSION }} --target wasm32-unknown-unknown --profile minimal | |
echo ~/.cargo/bin >> $GITHUB_PATH | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: frontend | |
- name: Install dependencies | |
run: | | |
sudo apt install libarchive-tools | |
pipx install poetry==${{ env.POETRY_VERSION }} poetry-dynamic-versioning==${{ env.POETRY_VERSION }} | |
poetry install | |
cargo install --locked trunk@${{ env.TRUNK_VERSION }} | |
- name: Test | |
run: | | |
make test_e2e |