Bump actions/checkout from 3 to 4 #239
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: CI | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
workflow_dispatch: | |
jobs: | |
pre-commit: | |
name: pre commit checks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v3 | |
- uses: pre-commit/[email protected] | |
list-node-projects: | |
name: list node projects | |
runs-on: ubuntu-latest | |
needs: pre-commit | |
outputs: | |
projects: ${{ steps.list-projects.outputs.PROJECTS }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: List node projects | |
id: list-projects | |
run: echo "PROJECTS=$(find . -name "package.json" -exec dirname {} \; | grep -v node_modules | jq --raw-input --slurp -c 'split("\n") | .[0:-1]')" >> $GITHUB_OUTPUT | |
list-python-projects: | |
name: list python projects | |
runs-on: ubuntu-latest | |
needs: pre-commit | |
outputs: | |
projects: ${{ steps.list-projects.outputs.PROJECTS }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: List python projects | |
id: list-projects | |
run: echo "PROJECTS=$(find . -name "pyproject.toml" -exec dirname {} \; | jq --raw-input --slurp -c 'split("\n") | .[0:-1]')" >> $GITHUB_OUTPUT | |
python-tests: | |
name: run python tests | |
runs-on: ubuntu-latest | |
needs: list-python-projects | |
strategy: | |
matrix: | |
project: ${{ fromJson(needs.list-python-projects.outputs.projects) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.11 | |
cache: 'pip' | |
- name: Install dependencies | |
run: | | |
# python -m pip install --upgrade pip | |
pushd ${{ matrix.project }} | |
test -f requirements.txt && pip install -r requirements.txt || true | |
test -f requirements-dev.txt && pip install -r requirements-dev.txt | |
- name: Run tests | |
run: | | |
pushd ${{ matrix.project }} | |
python -m pytest | |
- name: Archive test results | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ${{ matrix.project }}/*-test-results.xml | |
- name: Report coverage | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: ${{ matrix.project }}/coverage.xml | |
env_vars: OS,PYTHON | |
fail_ci_if_error: false | |
verbose: true | |
node-tests: | |
name: run node tests | |
runs-on: ubuntu-latest | |
needs: list-node-projects | |
strategy: | |
matrix: | |
project: ${{ fromJson(needs.list-node-projects.outputs.projects) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
cache-dependency-path: ${{ matrix.project }}/package-lock.json | |
- name: Install dependencies | |
run: | | |
pushd ${{ matrix.project }} | |
npm install | |
- name: Run tests | |
run: | | |
pushd ${{ matrix.project }} | |
npm run ci | |
- name: Archive test results | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ${{ matrix.project }}/reports/*-test-results.xml | |
- name: Report coverage | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: ${{ matrix.project }}/reports/coverage/report-lcov/lcov.info | |
fail_ci_if_error: false | |
verbose: true | |
test-summary: | |
name: test summary comment | |
runs-on: ubuntu-latest | |
needs: [node-tests, python-tests] | |
steps: | |
- name: Download test results | |
uses: actions/download-artifact@v3 | |
- name: List test results | |
run: | | |
find . -name "*.xml" | |
- name: Test Summary | |
uses: test-summary/action@v2 | |
with: | |
paths: | | |
artifact/*-test-results.xml | |
if: always() |