Skip to content

ci: scope generation validation to generation-affecting files only#173

Merged
Aaron ("AJ") Steers (aaronsteers) merged 5 commits into
mainfrom
devin/1782180233-generation-path-filter
Jun 23, 2026
Merged

ci: scope generation validation to generation-affecting files only#173
Aaron ("AJ") Steers (aaronsteers) merged 5 commits into
mainfrom
devin/1782180233-generation-path-filter

Conversation

@aaronsteers

@aaronsteers Aaron ("AJ") Steers (aaronsteers) commented Jun 23, 2026

Copy link
Copy Markdown
Member

Summary

Fixes generation validation failures on Dependabot dependency PRs (e.g. #170 mypy bump) where SPEAKEASY_API_KEY is unavailable and the generation check is unnecessary.

Two changes:

  1. Path filter narrowedcheck-paths in test-full.yml now matches only generation-affecting files (.speakeasy/**, gen.yaml, overlays/**, src/**, scripts/**, README.md, etc.) instead of '**' - README - docs/. Dev-only dependency bumps (pyproject.toml / uv.lock) no longer trigger generation validation.

  2. Skip condition moved into generate-command.yml — new should_run boolean input (default true) on workflow_call. The Generate SDK job checks if: ${{ inputs.should_run != false }} and skips internally, so it reports as "skipped" in CI rather than never appearing — satisfying required check merge requirements. test-full.yml's validate job always calls the inner workflow (no if: on the caller).

Link to Devin session: https://app.devin.ai/sessions/854c664803f3400387fdaa02e123b888
Requested by: Aaron ("AJ") Steers (@aaronsteers)

Skip validate + zero-diff jobs for dependency-only PRs (mypy, pylint, etc.)
since dev dependency updates cannot affect Speakeasy-generated code.

Generation-affecting paths: .speakeasy/**, gen.yaml, overlays/**, scripts/**,
poe_tasks.toml, src/**, .genignore, .github/speakeasy/**, and the generation
workflow itself.

Co-Authored-By: AJ Steers <aj@airbyte.io>
@devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@aaronsteers Aaron ("AJ") Steers (aaronsteers) marked this pull request as ready for review June 23, 2026 02:05
Copilot AI review requested due to automatic review settings June 23, 2026 02:05

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread .github/workflows/test-full.yml Outdated
README.md is an input to prepare_readme.py which produces the tracked
README-PYPI.md, so changes to it can cause generation drift.

Co-Authored-By: AJ Steers <aj@airbyte.io>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR adjusts the Test (Full) GitHub Actions workflow to avoid running Speakeasy generation validation on PRs that only touch non-generation-related files (notably Dependabot dev dependency bumps), reducing failures when SPEAKEASY_API_KEY is unavailable.

Changes:

  • Scoped the dorny/paths-filter “generation” filter from “almost everything” to a curated set of generation-related paths.
  • Added explanatory comments documenting why path filtering is done at the job level and why dependency-only PRs should skip generation validation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/test-full.yml Outdated
Comment thread .github/workflows/test-full.yml Outdated
Comment on lines +19 to +21
# The path filter is scoped to generation-affecting files only (Speakeasy config,
# gen.yaml, overlays, scripts, src/, etc.). Dev dependency updates (mypy, pylint,
# etc.) skip the generation validation since they cannot affect generated code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

☑️ Resolved in c4a2572. Reworded the comment to explain both reasons: dev deps don't change generated artifacts, and Dependabot PRs lack SPEAKEASY_API_KEY.


Devin session

Comment thread .github/workflows/test-full.yml
…s as skipped

The validate job in test-full.yml now always calls generate-command.yml
(no if: condition). The Generate SDK job inside generate-command.yml
checks the new should_run input and skips itself internally. This ensures
the job name appears in CI as 'skipped' rather than never being created,
which satisfies required check merge requirements.

Co-Authored-By: AJ Steers <aj@airbyte.io>
Comment thread .github/workflows/test-full.yml Outdated
Comment on lines +43 to +57
- 'README.md'
- 'scripts/**'
- 'poe_tasks.toml'
- 'src/**'

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I think it's better to move this into the generate workflow. It's no longer needed here and it is needed there. Rather than calculate here and pass the Boolean, just calculate it there.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

☑️ Resolved in 38c2f1c. Moved the path filter entirely into generate-command.yml:

  • New check-paths job inside generate-command.yml runs only during dry_run mode
  • Generate SDK job: if: always() && (!inputs.dry_run || needs.check-paths.outputs.should_run == 'true')
  • test-full.yml simplified — no more check-paths job or should_run input, just calls generate-command.yml directly

Devin session

The generation workflow now owns its path filtering logic:
- New check-paths job runs only during dry_run mode
- Generate SDK job skips if dry_run and no generation-affecting files changed
- test-full.yml simplified to just call generate-command.yml + zero-diff

This ensures the Generate SDK job name always appears in CI (as skipped
or passed), satisfying required check merge requirements.

Co-Authored-By: AJ Steers <aj@airbyte.io>
@aaronsteers Aaron ("AJ") Steers (aaronsteers) merged commit dc28e38 into main Jun 23, 2026
4 checks passed
@aaronsteers Aaron ("AJ") Steers (aaronsteers) deleted the devin/1782180233-generation-path-filter branch June 23, 2026 02:31
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.

2 participants