Skip to content

Commit

Permalink
[skip ci] ci: Refactor workflows to display coverage reports in PRs f…
Browse files Browse the repository at this point in the history
…rom fork
  • Loading branch information
thomass-dev committed Dec 27, 2024
1 parent 469d1e5 commit e1ba778
Show file tree
Hide file tree
Showing 12 changed files with 336 additions and 217 deletions.
97 changes: 97 additions & 0 deletions .github/workflows/backend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: backend

on:
pull_request:
paths:
- 'skore/src/**'
- 'skore/tests/**'
- 'skore/pyproject.toml'
- 'skore/requirements*.txt'
- '.github/workflows/backend.yml'
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

defaults:
run:
shell: "bash"

jobs:
backend-lint:
runs-on: "ubuntu-latest"
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip

- name: Install dependencies
run: python -m pip install --upgrade pip pre-commit

- name: Lint
working-directory: skore/
run: pre-commit run --all-files ruff

backend-test:
strategy:
fail-fast: true
matrix:
os: ["ubuntu-latest", "windows-latest"]
python: ["3.9", "3.10", "3.11", "3.12"]
include:
- os: "ubuntu-latest"
python: "3.12"
coverage: true
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
cache: pip

- name: Install dependencies
run: python -m pip install --upgrade pip build

- name: Build
working-directory: skore/
run: python -m build

- name: Install
working-directory: skore/
run: wheel=(dist/*.whl); python -m pip install "${wheel}[test]"

- name: Test without coverage
if: ${{ ! matrix.coverage }}
timeout-minutes: 10
working-directory: skore/
run: python -m pytest -n auto --no-cov src/ tests/

- name: Test with coverage
if: ${{ matrix.coverage }}
timeout-minutes: 10
working-directory: skore/
run: |
mkdir coverage
python -m pytest -n auto --junitxml=coverage/coverage.xml --cov=skore src/ tests/ | tee coverage/coverage.txt
- name: Upload coverage reports
if: ${{ matrix.coverage }}
uses: actions/upload-artifact@v4
with:
name: backend-coverage
path: skore/coverage/
69 changes: 0 additions & 69 deletions .github/workflows/ci.yml

This file was deleted.

88 changes: 88 additions & 0 deletions .github/workflows/frontend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: frontend

on:
pull_request:
paths:
- 'skore-ui/**'
- '.github/workflows/frontend.yml'
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

defaults:
run:
shell: "bash"

jobs:
frontend-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: skore-ui/package-lock.json

- name: Lint
working-directory: skore-ui/
run: |
npm install
npm run type-check
npm run lint
npm run format
npm run style-lint
frontend-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: skore-ui/package-lock.json

- name: Test with coverage
working-directory: skore-ui/
run: |
npm install
npm run test:unit:coverage
- name: Upload coverage reports
uses: actions/upload-artifact@v4
with:
name: frontend-coverage
path: skore-ui/coverage/

frontend-build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: skore-ui/package-lock.json

- name: Build
working-directory: skore-ui/
run: |
npm install
npm run build
41 changes: 30 additions & 11 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,40 @@
name: Reusable lint workflow
name: lint

on: [workflow_call]
on:
pull_request:
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

defaults:
run:
shell: "bash"

jobs:
lint-all-files:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Lint all files
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade pre-commit
python-version: "3.12"
cache: pip

- name: Install dependencies
run: python -m pip install --upgrade pip pre-commit

- name: Lint
run: |
pre-commit run --all-files check-yaml
pre-commit run --all-files check-toml
pre-commit run --all-files check-added-large-files
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
name: Add PR assignee
name: add assignee in PR

on:
pull_request:
pull_request_target:
types: [opened]

permissions: {}

jobs:
add-pr-assignee:
add-assignee:
runs-on: ubuntu-latest
permissions:
pull-requests: write
Expand Down
57 changes: 57 additions & 0 deletions .github/workflows/pr-display-backend-coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: display backend coverage in PR

on:
workflow_run:
workflows: [backend]
types: [completed]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions: {}

jobs:
acquire-pr-number:
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
outputs:
PR_NUMBER: ${{ steps.acquire-pr-number.outputs.number }}
permissions:
contents: read
steps:
- id: acquire-pr-number
run: gh pr view --repo "${REPOSITORY}" "${BRANCH}" --json 'number' --jq '"number=\(.number)"' >> "${GITHUB_OUTPUT}"
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
BRANCH: |-
${{
(github.event.workflow_run.head_repository.fork == true)
&& format('{0}:{1}', github.event.workflow_run.head_repository.owner.login, github.event.workflow_run.head_branch)
|| github.event.workflow_run.head_branch
}}
display-backend-coverage:
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
needs: [acquire-pr-number]
permissions:
actions: read
pull-requests: write
steps:
- name: Download coverage reports
uses: actions/download-artifact@v4
with:
name: backend-coverage
path: coverage/
github-token: ${{ github.token }}
run-id: ${{ github.event.workflow_run.id }}

- name: Display coverage reports
uses: MishaKav/pytest-coverage-comment@main
with:
issue-number: ${{ needs.acquire-pr-number.outputs.PR_NUMBER }}
pytest-coverage-path: coverage/coverage.txt
junitxml-path: coverage/coverage.xml
title: backend coverage report
Loading

0 comments on commit e1ba778

Please sign in to comment.