Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Refactor workflows so that they are usable by forks #981

Merged
merged 9 commits into from
Jan 9, 2025
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/.github/ @thomass-dev @rouk1 @augustebaum
rouk1 marked this conversation as resolved.
Show resolved Hide resolved
3 changes: 1 addition & 2 deletions .github/actions/sphinx/deploy/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ inputs:
required: false
default: scaleway
BUCKET:
required: false
default: prod-probabl-skore
required: true
SOURCE:
required: true
DESTINATION:
Expand Down
38 changes: 38 additions & 0 deletions .github/actions/workflow-run/context/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: acquire-pr-context
description: |
Acquire the PR number and the PR commit HEAD sha, after a "workflow_run" event.

The "workflow_run" context differs from the "pull_request" context and doesn't contain
PR basic information. This action intends to provide some missing information in the
"workflow_run" context, without having to explicitly record them in the workflow that
triggered the "workflow_run" event.
Comment on lines +3 to +8
Copy link
Contributor

@rouk1 rouk1 Jan 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment should express the difference between "workflow_run" and other execution context.


outputs:
pr-number:
description: "The PR number"
value: ${{ steps.acquire-pr-context.outputs.number }}
pr-head-sha:
description: "The PR commit HEAD sha"
value: ${{ steps.acquire-pr-context.outputs.head-sha }}

runs:
using: composite
steps:
- id: acquire-pr-context
shell: bash
run: |-
gh pr view \
--repo "${REPOSITORY}" "${BRANCH}" \
--json 'number,headRefOid' \
--jq '"number=\(.number)\nhead-sha=\(.headRefOid)"' \
\
>> "${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
}}
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 src/ tests/ --no-cov

- name: Test with coverage
if: ${{ matrix.coverage }}
timeout-minutes: 10
working-directory: skore/
run: |
mkdir coverage
python -m pytest -n auto src/ tests/ --junitxml=coverage/coverage.xml --cov-config=pyproject.toml --cov | tee coverage/coverage.txt

- name: Upload coverage reports
if: ${{ matrix.coverage && (github.event_name == 'pull_request') }}
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.

89 changes: 89 additions & 0 deletions .github/workflows/frontend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
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
if: ${{ github.event_name == 'pull_request' }}
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]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may document here that no user code should be executed in this action.


permissions: {}

jobs:
add-pr-assignee:
add-assignee:
runs-on: ubuntu-latest
permissions:
pull-requests: write
Expand Down
Loading
Loading