Ensure reproducible development and test environment #1321
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 Poetry | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} | |
pipx install poetry-dynamic-versioning==${{ env.POETRY_DYNAMIC_VERSIONING_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: Install Poetry | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} | |
pipx install poetry-dynamic-versioning==${{ env.POETRY_DYNAMIC_VERSIONING_VERSION }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: poetry | |
- name: Install dependencies | |
run: | | |
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: Install Poetry | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} | |
pipx install poetry-dynamic-versioning==${{ env.POETRY_DYNAMIC_VERSIONING_VERSION }} | |
- 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 | |
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: Install Poetry | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} | |
pipx install poetry-dynamic-versioning==${{ env.POETRY_DYNAMIC_VERSIONING_VERSION }} | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: poetry | |
- name: Install dependencies | |
run: | | |
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: Install Poetry | |
run: | | |
pipx install poetry==${{ env.POETRY_VERSION }} | |
pipx install poetry-dynamic-versioning==${{ env.POETRY_DYNAMIC_VERSIONING_VERSION }} | |
- 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 | |
poetry install | |
cargo install --locked trunk@${{ env.TRUNK_VERSION }} | |
- name: Test | |
run: | | |
make test_e2e |