diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..df12f65 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,49 @@ +name: Continous Integration + +on: [pull_request] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.p#ython-version }} + - name: Install Poetry + uses: snok/install-poetry@v1 + - name: Install + run: poetry install + - name: Run tests + run: poetry run pytest --junitxml=junit/test-results-${{ matrix.python-version }}.xml --cov=liblistenbrainz --cov-report=xml:junit/coverage-${{ matrix.python-version }}.xml + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: junit-${{ matrix.python-version }} + path: junit/* + + report: + runs-on: ubuntu-latest + needs: test + steps: + - uses: actions/download-artifact@v4 + - name: Publish Test Reports + uses: EnricoMi/publish-unit-test-result-action/composite@v2 + if: always() + with: + files: junit-*/test-results-*.xml + - name: Create Coverage Report + uses: irongut/CodeCoverageSummary@v1.3.0 + with: + filename: junit-*/coverage-*.xml + format: markdown + output: both + - name: Add coverage PR comment + uses: marocchino/sticky-pull-request-comment@v2 + with: + path: code-coverage-results.md