Skip to content

ci: replace unmaintained fkirc/skip-duplicate-actions with inline git-diff - #3

Merged
xcompass merged 1 commit into
mainfrom
ci/replace-skip-duplicate-actions-node20
May 14, 2026
Merged

ci: replace unmaintained fkirc/skip-duplicate-actions with inline git-diff#3
xcompass merged 1 commit into
mainfrom
ci/replace-skip-duplicate-actions-node20

Conversation

@xcompass

Copy link
Copy Markdown
Member

Summary

GitHub's runner annotation on the last CI run flagged fkirc/skip-duplicate-actions@v5.3.1 as a Node.js 20 action:

Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: fkirc/skip-duplicate-actions@v5.3.1. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026.

The upstream fkirc/skip-duplicate-actions repository has not shipped a release since 2023-10 and shows no signs of resuming maintenance. Rather than swap one third-party dependency for another, replace it with an inline git diff step. The action's only feature in use was paths_ignore; concurrent_skipping and skip_after_successful_duplicate were already disabled in our config, so they don't need replacement.

Behavior contract

Exactly preserved:

  • Output is still needs.detect-noop.outputs.noop ("true" or "false"), so every downstream job's if gate works unchanged.
  • Same ignore patterns: *.md, *.md.gotmpl, .github/**, docs/**, examples/**.
  • New-branch first-push (base == 000…000) → should_skip=false, matching historical "always run on first push".

Test plan

  • YAML parses (python3 -c 'import yaml; yaml.safe_load(...)' clean).
  • No third-party action reference left for the noop step (actions/checkout@v6 is the only remaining action call, GitHub first-party).
  • PR's own CI run validates the new step (this PR touches .github/** so the noop step itself should output should_skip=true against main — i.e. the PR demonstrates its own correctness by skipping downstream jobs).

…-diff

GitHub's CI runner annotation flags fkirc/skip-duplicate-actions@v5.3.1 as
running on Node.js 20. Node.js 20 will be forced to Node.js 24 on
2026-06-02 and removed entirely on 2026-09-16. The upstream
fkirc/skip-duplicate-actions repository has not shipped a release since
2023-10 and shows no signs of resuming maintenance.

Of the action's features, only `paths_ignore` was in use:

  paths_ignore: '["*.md","*.md.gotmpl",".github/**","docs/**","examples/**"]'
  concurrent_skipping: false
  skip_after_successful_duplicate: false

Replace with an inline bash step that runs `git diff --name-only` between
the appropriate base/head (PR base..head, or before..after for push) and
checks whether any changed file falls outside the ignored set. Same
output contract (`should_skip=true|false` on $GITHUB_OUTPUT) so the
existing `needs.detect-noop.outputs.noop` references on every downstream
job continue to work unchanged.

Behavioural notes:
- First push to a new branch (base == 000…000) short-circuits to
  should_skip=false; this matches the historical "always run on new
  branches" behaviour.
- Patterns match the original semantics:
  *.md / *.md.gotmpl anywhere; .github/, docs/, examples/ trees only at
  repo root, with a trailing slash required (so a hypothetical top-level
  file named '.github' would not be matched, just like the original
  glob).
- No network calls or third-party action surface; `actions/checkout@v6`
  is the only remaining external action in this job and is GitHub
  first-party.
@xcompass
xcompass merged commit 0f1ed34 into main May 14, 2026
7 checks passed
@xcompass
xcompass deleted the ci/replace-skip-duplicate-actions-node20 branch May 14, 2026 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant