Skip to content

Commit

Permalink
Backport CI and test modernization
Browse files Browse the repository at this point in the history
  • Loading branch information
fdintino committed Nov 15, 2024
1 parent 2554f51 commit 3c6cc5d
Show file tree
Hide file tree
Showing 57 changed files with 13,610 additions and 2,006 deletions.
148 changes: 106 additions & 42 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,28 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10"]
django-version: ["2.2", "3.2", "4.0"]
grappelli: ["0"]
grappelli: ["0", "1"]
python-version: ["3.11"]
django-version: ["4.2"]
exclude:
- python-version: "3.7"
django-version: "4.0"
- python-version: "3.10"
django-version: "2.2"
# Exclude some version combos that don't need to be tested (since
# the combination of python and django versions is unlikely to
# be germane to django-nested-admin)
- python-version: "3.8"
django-version: "3.2"
- python-version: "3.9"
django-version: "4.0"
- python-version: "3.11"
grappelli: "1"
include:
- grappelli: "0"
name-suffix: ""
- grappelli: "1"
name-suffix: " + grappelli"
python-version: "3.7"
django-version: "2.2"
- grappelli: "1"
name-suffix: " + grappelli"
python-version: "3.10"
django-version: "3.2"
- python-version: "3.9"
django-version: "4.2"
grappelli: "1"
- python-version: "3.9"
django-version: "5.0"
grappelli: "0"
- python-version: "3.10"
django-version: "5.0"
grappelli: "1"
- python-version: "3.12"
django-version: "5.1"
grappelli: "0"

runs-on: ubuntu-latest
name: Django ${{ matrix.django-version }} (Python ${{ matrix.python-version }})${{ matrix.name-suffix }}
name: Django ${{ matrix.django-version }} (Python ${{ matrix.python-version }})${{ matrix.grappelli == '1' && ' + grappelli' || '' }}

env:
DJANGO: ${{ matrix.django-version }}
Expand All @@ -45,47 +38,49 @@ jobs:
NODE_ENV: test

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Setup chromedriver
uses: nanasess/setup-chromedriver@v1.0.5
# uses: nanasess/setup-chromedriver@v2.2.2
uses: nanasess/setup-chromedriver@42cc2998329f041de87dc3cfa33a930eacd57eaa

- name: Install tox
run: |
python3 -m pip install tox tox-gh-actions
- name: Cache instrumented static files
id: cache-test-dist
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: nested_admin/tests/static
key: test-dist-${{ hashFiles('package-lock.json', '.github/workflows/test.yml', 'webpack.config.js', 'package.json', '.*rc*', 'frontend/**') }}
key: test-dist-${{ hashFiles('package-lock.json', '.github/workflows/test.yml', 'webpack.config.js', 'package.json', '.*rc*', 'nested_admin/static/nested_admin/src/**/*.*s') }}

- name: Cache node_modules
id: cache-node_modules
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: node_modules
key: node_modules-${{ hashFiles('package-lock.json') }}

- name: Setup nodejs 12
if: steps.cache-test-dist.outputs.cache-hit != 'true' || steps.cache-node_modules.outputs.cache-hit != 'true'
uses: actions/setup-node@v2
- name: Setup nodejs
if: steps.cache-test-dist.outputs.cache-hit != 'true'
uses: actions/setup-node@v3
with:
node-version: '12'
node-version: '16'
cache: 'npm'

- name: npm ci
if: steps.cache-test-dist.outputs.cache-hit != 'true' || steps.cache-node_modules.outputs.cache-hit != 'true'
if: steps.cache-test-dist.outputs.cache-hit != 'true' && steps.cache-node_modules.outputs.cache-hit != 'true'
run: |
npm ci || npm ci || npm ci
- name: Build instrumented static files
if: steps.cache-test-dist.outputs.cache-hit != 'true' || steps.cache-node_modules.outputs.cache-hit != 'true'
if: steps.cache-test-dist.outputs.cache-hit != 'true'
run: |
npm run build
Expand All @@ -98,7 +93,7 @@ jobs:

- name: Upload junit xml
if: always()
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: junit-reports
path: reports/*.xml
Expand All @@ -115,27 +110,96 @@ jobs:
env:
CODECOV_NAME: ${{ github.workflow }}

lint:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tool: ["flake8", "black", "eslint", "stylelint"]
include:
- tool: flake8
language: python
- tool: black
language: python
- tool: eslint
language: javascript
- tool: stylelint
language: javascript

steps:
- uses: actions/checkout@v3

- uses: actions/setup-python@v4
if: matrix.language == 'python'
with:
python-version: 3.9

- name: Cache node_modules
if: matrix.language == 'javascript'
id: cache-node_modules
uses: actions/cache@v3
with:
path: node_modules
key: node_modules-${{ hashFiles('package-lock.json') }}-lint
restore-keys: |
node_modules-${{ hashFiles('package-lock.json') }}
- name: Setup nodejs
if: matrix.language == 'javascript'
uses: actions/setup-node@v3
with:
node-version: '16'
cache: 'npm'

- name: npm ci
if: matrix.language == 'javascript' && steps.cache-node_modules.outputs.cache-hit != 'true'
run: |
npm ci || npm ci || npm ci
- name: Run black
if: matrix.tool == 'black'
uses: psf/black@stable
with:
src: "nested_admin docs setup.py"
version: "22.8.0"

- name: Install flake8
if: matrix.tool == 'flake8'
run: pip install flake8

- name: Run flake8
if: matrix.tool == 'flake8'
uses: suo/flake8-github-action@releases/v1
with:
checkName: 'lint'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Run ${{ matrix.tool }}
if: matrix.language == 'javascript'
run: |
npm run lint:${{ matrix.tool }}
report:
if: always()
needs: build
runs-on: ubuntu-latest
name: "Report Test Results"
steps:
- uses: actions/download-artifact@v2
- uses: actions/download-artifact@v3
with:
name: junit-reports

- name: Publish tests report
uses: mikepenz/action-junit-report@5703ba1461f35871cde0208140d737d3e1eef38f
uses: mikepenz/action-junit-report@1a91e26932fb7ba410a31fab1f09266a96d29971
with:
report_paths: ./*.xml
github_token: ${{ secrets.GITHUB_TOKEN }}
require_tests: true
fail_on_failure: true
check_name: Test Report

success:
needs: report
needs: [lint, report]
runs-on: ubuntu-latest
name: Test Successful
steps:
Expand Down
Loading

0 comments on commit 3c6cc5d

Please sign in to comment.