From 1031a823f58f2472ce16bc5055b14c8d2eac2b60 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 15:40:30 +0100 Subject: [PATCH 1/9] Speed up ci by only ranning fast tests on drafts --- .github/workflows/tests.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 39534b461..a2a89a6b3 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -62,7 +62,12 @@ jobs: run: uv pip install --system .[dev] - name: Run tests - run: pytest -v --numprocesses=auto + run: | + if [[ "${{ github.event.pull_request.draft }}" == "true" ]]; then + pytest -v --numprocesses=auto -m "not slow" + else + pytest -v --numprocesses=auto + fi test-examples: runs-on: ubuntu-24.04 From 795247066c317d00707601e0885faf8fd25c08e2 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 15:46:22 +0100 Subject: [PATCH 2/9] Remove deprecated from drafts --- .github/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index a2a89a6b3..a187e9a51 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -64,7 +64,7 @@ jobs: - name: Run tests run: | if [[ "${{ github.event.pull_request.draft }}" == "true" ]]; then - pytest -v --numprocesses=auto -m "not slow" + pytest -v --numprocesses=auto -m "not slow and not deprecated_api" else pytest -v --numprocesses=auto fi From b3cb48a0019de2b0a38de7d7427b9c89bc7b8d86 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 15:53:40 +0100 Subject: [PATCH 3/9] Improve test selection --- .github/workflows/tests.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index a187e9a51..b9167c5e1 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -64,8 +64,10 @@ jobs: - name: Run tests run: | if [[ "${{ github.event.pull_request.draft }}" == "true" ]]; then - pytest -v --numprocesses=auto -m "not slow and not deprecated_api" + # Draft PR: skip examples, slow, and deprecated_api + pytest -v --numprocesses=auto -m "not examples and not slow and not deprecated_api" else + # Ready PR & main push: examples excluded via addopts pytest -v --numprocesses=auto fi From a6262821f89554a6c40cd80b1d35853499156504 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 15:54:56 +0100 Subject: [PATCH 4/9] Make docs match this pattern --- .github/workflows/docs.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 84d191d61..8c481d110 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -81,6 +81,14 @@ jobs: grep -vFf slow_notebooks.txt | \ xargs -P 4 -I {} sh -c 'jupyter execute --inplace "$1" || exit 255' _ {} + - name: Execute slow notebooks + if: steps.notebook-cache.outputs.cache-hit != 'true' && github.event.pull_request.draft != true + run: | + set -eo pipefail + # Execute slow notebooks (skip on draft PRs) + cd docs/notebooks && cat slow_notebooks.txt | \ + xargs -I {} sh -c 'jupyter execute --inplace "$1" || exit 255' _ {} + - name: Build docs env: MKDOCS_JUPYTER_EXECUTE: "false" From f87fd7fc534588412979384d418900ea71a7985d Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 15:56:02 +0100 Subject: [PATCH 5/9] Fix docs workflow trigger --- .github/workflows/docs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 8c481d110..146e6db66 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -11,6 +11,7 @@ on: paths: - 'docs/**' - 'mkdocs.yml' + - 'flixopt/**' workflow_dispatch: workflow_call: inputs: From 043a644ff7035f80dff86cd2818ead7b0f928fc2 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 15:57:57 +0100 Subject: [PATCH 6/9] Add include paths to workflows: - flixopt/** (source code) - tests/** (test files) - pyproject.toml (config/dependencies) --- .github/workflows/tests.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index b9167c5e1..360286887 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -3,8 +3,16 @@ name: Tests on: push: branches: [main] + paths: + - 'flixopt/**' + - 'tests/**' + - 'pyproject.toml' pull_request: branches: ["**"] + paths: + - 'flixopt/**' + - 'tests/**' + - 'pyproject.toml' workflow_dispatch: workflow_call: # Allow release.yaml to call this workflow. From 0176460e7df658cf14a45b347cb598ffe5234efb Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 15:59:31 +0100 Subject: [PATCH 7/9] Added .github/workflows/** to both tests and docs workflows. Now CI config changes will trigger both. --- .github/workflows/docs.yaml | 2 ++ .github/workflows/tests.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 146e6db66..4a77af961 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -7,11 +7,13 @@ on: - 'docs/**' - 'mkdocs.yml' - 'flixopt/**' + - '.github/workflows/**' pull_request: paths: - 'docs/**' - 'mkdocs.yml' - 'flixopt/**' + - '.github/workflows/**' workflow_dispatch: workflow_call: inputs: diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 360286887..ba797135d 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -7,12 +7,14 @@ on: - 'flixopt/**' - 'tests/**' - 'pyproject.toml' + - '.github/workflows/**' pull_request: branches: ["**"] paths: - 'flixopt/**' - 'tests/**' - 'pyproject.toml' + - '.github/workflows/**' workflow_dispatch: workflow_call: # Allow release.yaml to call this workflow. From e33426406b7e9be90c601b56a48141263566ba21 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 17:54:36 +0100 Subject: [PATCH 8/9] Retrigger CI From 5c974586b34ab92814ee32ad06fd6135462ea254 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Sat, 10 Jan 2026 17:58:02 +0100 Subject: [PATCH 9/9] Ensure workflows are triggered on ready_for_review --- .github/workflows/docs.yaml | 7 ++++--- .github/workflows/tests.yaml | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 4a77af961..23118258a 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -9,6 +9,7 @@ on: - 'flixopt/**' - '.github/workflows/**' pull_request: + types: [opened, synchronize, reopened, ready_for_review] paths: - 'docs/**' - 'mkdocs.yml' @@ -85,12 +86,12 @@ jobs: xargs -P 4 -I {} sh -c 'jupyter execute --inplace "$1" || exit 255' _ {} - name: Execute slow notebooks - if: steps.notebook-cache.outputs.cache-hit != 'true' && github.event.pull_request.draft != true + if: steps.notebook-cache.outputs.cache-hit != 'true' && github.event.pull_request.draft != 'true' run: | set -eo pipefail - # Execute slow notebooks (skip on draft PRs) + # Execute slow notebooks in parallel (skip on draft PRs) cd docs/notebooks && cat slow_notebooks.txt | \ - xargs -I {} sh -c 'jupyter execute --inplace "$1" || exit 255' _ {} + xargs -P 4 -I {} sh -c 'jupyter execute --inplace "$1" || exit 255' _ {} - name: Build docs env: diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index ba797135d..b462f9a22 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -9,6 +9,7 @@ on: - 'pyproject.toml' - '.github/workflows/**' pull_request: + types: [opened, synchronize, reopened, ready_for_review] branches: ["**"] paths: - 'flixopt/**'