[PR #116] [MERGED] [ci] Split CI into four parallel jobs #121

Closed
opened 2026-10-13 19:47:35 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Glitchy-Sheep/boosty-downloader/pull/116
Author: @Glitchy-Sheep
Created: 8/8/2026
Status: ✅ Merged
Merged: 8/8/2026
Merged by: @Glitchy-Sheep

Base: main ← Head: ci/parallel-jobs


📝 Commits (2)

  • 795bd49 ci: 👷 Add composite setup action
  • b1ddd60 ci: 👷 Split CI into four parallel jobs

📊 Changes

2 files changed (+94 additions, -41 deletions)

View changed files

➕ .github/actions/setup/action.yml (+33 -0)
📝 .github/workflows/ci.yaml (+61 -41)

📄 Description

Summary

One serial job becomes four parallel ones: lint, tests, build and the changelog gate now report independently, and pushes to main finally run CI at all.

Problem

  • A failed lint hid the test results: one problem per push, slow feedback loop
  • One opaque check meant the branch ruleset could not require tests separately
  • The single job was not ready for the Python/OS matrix planned in the roadmap
  • Merged main lived without any CI: the workflow only ran on pull requests
  • The pip cache never prevented reinstalls - Poetry rebuilt the virtualenv every run

Fix

  • Jobs 🩺 Lint & Types, 🧪 Tests, 📦 Build and 📝 Changelog run in parallel; the gate script is unchanged, and only it fetches full history - the rest get a fast shallow clone
  • A composite action (.github/actions/setup) describes Python + Poetry once and caches the whole in-project .venv by the poetry.lock hash
  • A new push to a PR cancels its stale run; runs on main are never cancelled
  • permissions: contents: read, a timeout on every job, and a human name on every step so the run view reads as a story
  • Action versions checked against the latest releases: checkout v7, setup-python v7, cache v6, install-poetry v1

Before / After

Before: one check, wall time is the sum of all steps, red lint means no test signal.

After: four independent checks in one push, wall time is the slowest job, and the test job takes the roadmap matrix without re-running lint per cell.

Tests

  • This PR's own run is the live check: four separate jobs must appear and pass
  • The changelog gate keeps both bypasses ([skip changelog] title marker and the ci/skip-changelog label) - Renovate PRs stay unblocked

Notes

  • The Python/OS matrix itself is a separate roadmap decision (stage 6); the test job is just ready for it
  • Required status checks in the "Main Protection" ruleset can now point at the four jobs - a repo-settings follow-up

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Glitchy-Sheep/boosty-downloader/pull/116 **Author:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Created:** 8/8/2026 **Status:** ✅ Merged **Merged:** 8/8/2026 **Merged by:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Base:** `main` ← **Head:** `ci/parallel-jobs` --- ### 📝 Commits (2) - [`795bd49`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/795bd49eafdf382cca0f92d01570fa03d21d15ef) ci: :construction_worker: Add composite setup action - [`b1ddd60`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/b1ddd60fa0114715a0819d8667966ded329062b6) ci: :construction_worker: Split CI into four parallel jobs ### 📊 Changes **2 files changed** (+94 additions, -41 deletions) <details> <summary>View changed files</summary> ➕ `.github/actions/setup/action.yml` (+33 -0) 📝 `.github/workflows/ci.yaml` (+61 -41) </details> ### 📄 Description ## Summary One serial job becomes four parallel ones: lint, tests, build and the changelog gate now report independently, and pushes to main finally run CI at all. ## Problem - A failed lint hid the test results: one problem per push, slow feedback loop - One opaque check meant the branch ruleset could not require tests separately - The single job was not ready for the Python/OS matrix planned in the roadmap - Merged main lived without any CI: the workflow only ran on pull requests - The pip cache never prevented reinstalls - Poetry rebuilt the virtualenv every run ## Fix - Jobs `🩺 Lint & Types`, `🧪 Tests`, `📦 Build` and `📝 Changelog` run in parallel; the gate script is unchanged, and only it fetches full history - the rest get a fast shallow clone - A composite action (`.github/actions/setup`) describes Python + Poetry once and caches the whole in-project `.venv` by the `poetry.lock` hash - A new push to a PR cancels its stale run; runs on main are never cancelled - `permissions: contents: read`, a timeout on every job, and a human name on every step so the run view reads as a story - Action versions checked against the latest releases: checkout v7, setup-python v7, cache v6, install-poetry v1 ## Before / After **Before:** one check, wall time is the sum of all steps, red lint means no test signal. **After:** four independent checks in one push, wall time is the slowest job, and the `test` job takes the roadmap matrix without re-running lint per cell. ## Tests - This PR's own run is the live check: four separate jobs must appear and pass - The changelog gate keeps both bypasses ([skip changelog] title marker and the `ci/skip-changelog` label) - Renovate PRs stay unblocked ## Notes - The Python/OS matrix itself is a separate roadmap decision (stage 6); the `test` job is just ready for it - Required status checks in the "Main Protection" ruleset can now point at the four jobs - a repo-settings follow-up --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-13 19:47:35 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Glitchy-Sheep/boosty-downloader#121
No description provided.