You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
YAML
61 lines
1.5 KiB
YAML
name: Tests
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Cache Docker layers
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: /tmp/.buildx-cache
|
|
key: ${{ runner.os }}-buildx-${{ hashFiles('requirements.txt', 'docker/test/Dockerfile') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-buildx-
|
|
|
|
- name: Build Docker image with cache
|
|
run: |
|
|
cd docker/test
|
|
docker buildx build \
|
|
--cache-from type=local,src=/tmp/.buildx-cache \
|
|
--cache-to type=local,dest=/tmp/.buildx-cache-new,mode=max \
|
|
--load \
|
|
-t kompass:test \
|
|
-f Dockerfile \
|
|
../../
|
|
|
|
- name: Move cache
|
|
run: |
|
|
rm -rf /tmp/.buildx-cache
|
|
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
|
|
|
- name: Run tests
|
|
run: make test-only
|
|
|
|
- name: Check coverage
|
|
run: |
|
|
COVERAGE=$(python3 -c "import json; data=json.load(open('docker/test/htmlcov/coverage.json')); print(data['totals']['percent_covered'])")
|
|
echo "Coverage: ${COVERAGE}%"
|
|
if (( $(echo "$COVERAGE < 100" | bc -l) )); then
|
|
echo "Error: Coverage is ${COVERAGE}%, must be 100%"
|
|
exit 1
|
|
fi
|