This commit is contained in:
Andras Schmelczer 2022-05-26 20:59:46 +02:00
parent edf164edf7
commit 47e8d8b33a
3 changed files with 159 additions and 0 deletions

26
.github/workflows/check_great_ai.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: Check library
on:
workflow_dispatch:
push:
branches:
- dev
paths:
- "projects/great_ai/**"
- ".github/workflows/*"
jobs:
lint:
uses: ./.github/workflows/generic-lint-node.yml
with:
path_to_project: projects/great_ai
sonar:
needs: lint
uses: ./.github/workflows/generic-sonarqube-node.yml
with:
project_name: great_ai
path_to_project: projects/great_ai
secrets:
sonar_token: ${{ secrets.SONAR_TOKEN }}
sonar_host: ${{ secrets.SONAR_HOST_URL }}

View file

@ -0,0 +1,29 @@
name: Check linting and formatting of Python project
on:
workflow_call:
inputs:
path_to_project:
required: true
type: string
jobs:
lint:
name: Check linting and formatting of Python project
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8.12
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt --upgrade
working-directory: ${{ inputs.path_to_project }}
- name: Check code and formatting
run: scripts/check-python.sh ${{ inputs.path_to_project }}

View file

@ -0,0 +1,104 @@
name: Analyse Python project
on:
workflow_call:
inputs:
project_name:
required: true
type: string
path_to_project:
required: true
type: string
secrets:
sonar_token:
required: true
sonar_host:
required: true
jobs:
test:
name: Build and test on Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8.12", "3.9.12", "3.10.4"]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip setuptools pytest pytest-cov pytest-subtests
cd ${{ inputs.path_to_project }}
python3 -m pip install -r requirements.txt --upgrade
(test -f dev-requirements.txt && pip install -r dev-requirements.txt --upgrade) || true
- name: Run tests
run: python3 -m pytest --cov=. --cov-report=xml --junit-xml pytest.xml --asyncio-mode=strict || true
working-directory: ${{ inputs.path_to_project }}
- name: Upload results
if: always()
uses: actions/upload-artifact@v2
with:
name: Unit test coverage (Python ${{ matrix.python-version }})
path: ${{ inputs.path_to_project }}/*.xml
sonar:
name: Analyse Python project with SonarQube
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt --upgrade
working-directory: ${{ inputs.path_to_project }}
- name: Download test results
uses: actions/download-artifact@v2
with:
path: ${{ inputs.path_to_project }}/artifacts
- uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.sonar_token }}
SONAR_HOST_URL: ${{ secrets.sonar_host }}
with:
projectBaseDir: ${{ inputs.path_to_project }}
args: >
-Dsonar.projectKey=${{ inputs.project_name }}
-Dsonar.login=${{ secrets.sonar_token }}
-Dsonar.verbose=true
-Dsonar.python.coverage.reportPaths=artifacts/*/coverage.xml
-Dsonar.coverage.exclusions=**/external/**/*
-Dsonar.exclusions=**/external/**/*,artifacts/**/*
publish-test-results:
name: Publish unit test results
needs: test
runs-on: ubuntu-latest
if: always()
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
with:
path: artifacts
- name: Publish results
uses: EnricoMi/publish-unit-test-result-action@v1
with:
files: artifacts/*/pytest.xml