Replace fkirc/skip-duplicate-actions with a reusable skip-on-paths workflow
@rtibbles đang làm issue này rồi.
Từ ngày 12/6/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
fkirc/skip-duplicate-actions is unmaintained, pinned to @master, and runs on Node 20 — which GitHub force-migrates to Node 24 on 2026-06-16 and removes entirely on 2026-09-16. We use it across many org repos, primarily for its paths_ignore behaviour: skipping a CI run when every changed file matches an ignore glob, while still reporting success so required status checks stay green.
Replace it with a small reusable workflow hosted in this repo (learningequality/.github) that every repo can reference, then migrate all repos off the third-party action.
Complexity: Medium
Target branch: main
Context
GitHub's native paths-ignore trigger filter can't replace the action: when a required status check is filtered out by paths-ignore, it never reports a result, so the PR is blocked from merging indefinitely. This is a long-standing GitHub gap, and it's the specific reason we adopted fkirc/skip-duplicate-actions — the job still runs and reports success on ignorable-only changes, keeping required checks green.
The path-ignore skip can be replicated with a dependency-free git diff: compare the changed files against the ignore globs, and signal "skip" only when every changed file matches. Note that consumers using a shallow checkout (fetch-depth: 1) won't have the base commit available for the diff — the workflow needs to handle fetching the base ref.
The Change
Add a reusable workflow (.github/workflows/skip-on-paths.yml, on: workflow_call) in this repo that consumers call with a single job-level uses: learningequality/.github/.github/workflows/skip-on-paths.yml@main — no checkout of the .github repo required. The workflow checks out the caller's repository, computes the set of changed files for both pull_request and push events, resolves the base ref (fetching it when a shallow checkout means it isn't present), and exposes a should_skip output that is true only when every changed file matches one of the ignore globs. Consuming workflows gate their real jobs on that output via needs, so each job still runs and reports success — keeping required status checks green on ignorable-only changes.
The workflow accepts the ignore globs as a workflow_call input. Reusable-workflow inputs can't be arrays, so the globs come in as a string (e.g. a JSON or newline-delimited list matching today's ["**.po", "**.json"]). All logic lives inline in the workflow file; it must not depend on any third-party action.
Out of Scope
- The other features of
fkirc/skip-duplicate-actions(concurrent-run cancellation, duplicate-commit detection, already-succeeded skipping) are not replicated. Concurrent-run cancellation is already handled by workflow-levelconcurrency:blocks where needed. - No change to which paths each repo ignores — the workflow takes the existing glob list as input; per-repo lists are migrated as-is.
Acceptance Criteria
- A reusable workflow
skip-on-paths.yml(on: workflow_call) exists inlearningequality/.githuband is callable from other repos via a job-leveluses:, with no checkout of the.githubrepo required by the consumer. - The workflow accepts the ignore globs as a string input (e.g.
["**.po", "**.json"]), defaulting to no globs (nothing skipped). - The workflow exposes a
should_skipoutput that is true only when every changed file matches one of the ignore globs, and false when at least one changed file does not. - The skip computation works for both
pull_requestandpushevents. - The workflow resolves and fetches the base ref when the caller used a shallow checkout, so the diff is correct without requiring
fetch-depth: 0. - Gated jobs still run and report success on ignorable-only changes, so required status checks remain green.
- All logic is inline in the workflow file, with no third-party action dependencies.
- Usage is documented (README) with a copy-pasteable example showing how to call the workflow and gate a job on
should_skip. - Every repo currently using
fkirc/skip-duplicate-actionsis migrated to the new workflow, and no reference tofkirc/skip-duplicate-actionsremains across the org.
References
- Node 20 deprecation on GitHub Actions runners: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
fkirc/skip-duplicate-actions: https://github.com/fkirc/skip-duplicate-actions- Reusing workflows: https://docs.github.com/en/actions/sharing-automations/reusing-workflows
AI usage
I used Claude to draft this issue. It investigated the CI linting bottleneck and the fkirc/skip-duplicate-actions deprecation, and drafted each section from our discussion. I made all the scoping decisions (path-ignore-only scope, full rollout, reusable workflow over composite action), and reviewed and confirmed every section before it was filed.
- Ngôn ngữ chính
- JavaScript
- Star
- 1
- Fork
- 7
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của learningequality/.github
-
github_actions
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 55/100
learningequality/.github#95 ·
-
learningequality/.github#86 · 1 người được giao ·
-
learningequality/.github#67 · 1 bình luận · 1 người được giao ·
Tất cả issue của learningequality/.github
Issue tương tự
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
babalae/bettergi-scripts-list#3674 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
vadimdemedes/ink#1029 ·
-
code-quality refactoring
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
langchain-ai/deepagents#6450 ·
-
optimization optimization:agents-md-curator
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
githubnext/gh-aw-cao#13143 ·