Integrate with Starbase #1910
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: | |
branches: | |
- "main" | |
- "feature/*" | |
- "hotfix/*" | |
- "release/*" | |
- "renovate/*" | |
pull_request: | |
jobs: | |
lint: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Conventional commits | |
uses: webiny/[email protected] | |
- name: Install packages | |
run: | | |
sudo apt update | |
sudo apt install -y libapt-pkg-dev aspell aspell-en | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
cache: 'pip' | |
- name: Configure environment | |
run: | | |
echo "::group::Begin snap install" | |
echo "Installing snaps in the background while running apt and pip..." | |
sudo snap install --no-wait --classic pyright | |
sudo snap install --no-wait shellcheck | |
echo "::endgroup::" | |
echo "::group::pip install" | |
python -m pip install tox | |
echo "::endgroup::" | |
echo "::group::Create virtual environments for linting processes." | |
tox run --colored yes -m lint --notest | |
echo "::endgroup::" | |
echo "::group::Wait for snap to complete" | |
snap watch --last=install | |
echo "::endgroup::" | |
- name: Run Linters | |
run: tox run --skip-pkg-install --no-list-dependencies --colored yes -m lint | |
unit: | |
strategy: | |
matrix: | |
platform: [ubuntu-22.04, windows-2019] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: | | |
3.10 | |
3.12 | |
cache: 'pip' | |
- name: Install Ubuntu-specific dependencies | |
if: ${{ startsWith(matrix.platform, 'ubuntu') }} | |
run: | | |
sudo apt update | |
sudo apt install -y libapt-pkg-dev | |
- name: Install Ubuntu 22.04-specific dependencies | |
if: ${{ matrix.platform == 'ubuntu-22.04' }} | |
run: | | |
# 22.04 is the only one that has an 'umoci' package | |
sudo apt install -y umoci | |
- name: Configure environment | |
run: | | |
echo "::group::pip install" | |
python -m pip install tox | |
echo "::endgroup::" | |
mkdir -p results | |
- name: Setup Tox environments | |
run: tox run --colored yes -m tests --notest | |
- name: Test with tox | |
run: tox run --skip-pkg-install --no-list-dependencies --result-json results/tox-${{ matrix.platform }}.json --colored yes -m unit-tests | |
env: | |
PYTEST_ADDOPTS: "--no-header -vv -rN" | |
- name: Upload code coverage | |
uses: codecov/codecov-action@v3 | |
with: | |
directory: ./results/ | |
files: coverage*.xml | |
- name: Upload test results | |
if: success() || failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-results-${{ matrix.platform }} | |
path: results/ | |
integration: | |
strategy: | |
matrix: | |
platform: [ubuntu-22.04, windows-2019] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: | | |
3.10 | |
3.12 | |
cache: 'pip' | |
- name: Install Ubuntu-specific dependencies | |
if: ${{ startsWith(matrix.platform, 'ubuntu') }} | |
run: | | |
sudo apt update | |
sudo apt install -y libapt-pkg-dev | |
- name: Install Ubuntu 22.04-specific dependencies | |
if: ${{ matrix.platform == 'ubuntu-22.04' }} | |
run: | | |
# 22.04 is the only one that has an 'umoci' package | |
sudo apt install -y umoci | |
- name: Configure environment | |
run: | | |
echo "::group::pip install" | |
python -m pip install tox | |
echo "::endgroup::" | |
mkdir -p results | |
- name: Setup Tox environments | |
run: tox run --colored yes -m tests --notest | |
- name: Test with tox | |
run: tox run --skip-pkg-install --no-list-dependencies --result-json results/tox-${{ matrix.platform }}.json --colored yes -m integration-tests | |
env: | |
PYTEST_ADDOPTS: "--no-header -vv -rN" | |
- name: Upload test results | |
if: success() || failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-results-${{ matrix.platform }} | |
path: results/ |