Skip to content

Comments

feat: skip CI checks for translation-only PRs#23550

Merged
keithwillcode merged 1 commit intomainfrom
devin/1756913753-skip-translation-ci-checks
Sep 3, 2025
Merged

feat: skip CI checks for translation-only PRs#23550
keithwillcode merged 1 commit intomainfrom
devin/1756913753-skip-translation-ci-checks

Conversation

@keithwillcode
Copy link
Contributor

What does this PR do?

This PR optimizes CI performance for auto-generated translation PRs by adding i18n.lock to the path filter exclusions in the GitHub Actions workflow. When PRs only modify translation files (common.json and i18n.lock), expensive CI jobs (dependency installation, type checking, linting, testing, and builds) will be skipped.

Context: Translation PRs like #23528 from lingo.dev frequently fail to merge quickly due to the active main branch, but they don't require the full test suite since they only contain translation updates.

Technical change: Adds |i18n.lock to the existing path filter exclusion pattern in .github/workflows/pr.yml, extending the current behavior that already skips CI for common.json-only changes.

Visual Demo

Not applicable - this is a workflow configuration change with no visible UI impact.

Mandatory Tasks

  • I have self-reviewed the code
  • Documentation update: N/A - this is an internal workflow optimization
  • I confirm automated tests are in place that prove my fix is effective or that my feature works

How should this be tested?

Testing approach:

  1. Create a test PR that only modifies i18n.lock and common.json files
  2. Verify that expensive CI jobs (deps, type-check, lint, unit-test, build-, e2e-) are skipped
  3. Confirm that the required job still passes and the PR remains mergeable
  4. Test that PRs with other file changes still trigger full CI as expected

Key validation points:

  • Path filter syntax works correctly with dorny/paths-filter@v3
  • Repository branch protection rules remain satisfied
  • No unintended files are excluded by the new pattern

Checklist

Human Review Priorities:

  • Critical: Verify path filter syntax is correct for dorny/paths-filter action
  • Critical: Confirm repository branch protection rules won't be broken by skipping these jobs
  • Important: Validate that i18n.lock pattern doesn't accidentally match other important files
  • Important: Check if there are other translation-related files that should also be excluded

Risks to consider:

  • Workflow syntax error could break CI for all PRs
  • Exclusion pattern might be too broad or too narrow
  • Required status checks configuration might conflict with skipped jobs

Link to Devin run: https://app.devin.ai/sessions/41b0f3c86b3743ec91d65142254ad345
Requested by: @keithwillcode

- Add i18n.lock to path filter exclusions alongside common.json
- Optimizes CI performance for auto-generated translation PRs from lingo.dev
- Maintains full checks for all other code changes

Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
@devin-ai-integration
Copy link
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 that start with 'DevinAI'.
  • 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 and CI monitoring

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 3, 2025

Walkthrough

The GitHub Actions workflow configuration was updated to modify the has-files-requiring-all-checks exclusion list by adding i18n.lock. As a result, changes limited to i18n.lock will not trigger or gate the “all-checks” requirement. No other workflow paths or logic were changed. There were no changes to exported or public entities.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch devin/1756913753-skip-translation-ci-checks

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@keithwillcode keithwillcode added core area: core, team members only foundation labels Sep 3, 2025
Copy link
Contributor

@anikdhabal anikdhabal left a comment

Choose a reason for hiding this comment

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

👍

@anikdhabal anikdhabal marked this pull request as ready for review September 3, 2025 15:45
@graphite-app graphite-app bot requested a review from a team September 3, 2025 15:45
@dosubot dosubot bot added the ci area: CI, DX, pipeline, github actions label Sep 3, 2025
@keithwillcode keithwillcode self-assigned this Sep 3, 2025
@keithwillcode keithwillcode added this to the v5.7 milestone Sep 3, 2025
@keithwillcode keithwillcode enabled auto-merge (squash) September 3, 2025 15:47
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
.github/workflows/pr.yml (2)

35-36: Nit: conventional markdown glob

**.md works, but **/*.md is more conventional and clearer to future readers.

-              - "!(**.md|.github/CODEOWNERS|docs/**|help/**|apps/web/public/static/locales/**/common.json|i18n.lock)"
+              - "!(**/*.md|.github/CODEOWNERS|docs/**|help/**|apps/web/public/static/locales/**/common.json|i18n.lock)"

35-36: Expand i18n.lock glob to match at any depth

To ensure any future subpackage i18n.lock files aren’t skipped, update the negated glob:

-              - "!(**.md|.github/CODEOWNERS|docs/**|help/**|apps/web/public/static/locales/**/common.json|i18n.lock)"
+              - "!(**.md|.github/CODEOWNERS|docs/**|help/**|apps/web/public/static/locales/**/common.json|**/i18n.lock)"
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between a218964 and cc8566d.

📒 Files selected for processing (1)
  • .github/workflows/pr.yml (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: bandhan-majumder
PR: calcom/cal.com#23192
File: packages/features/insights/components/booking/LeastCompletedBookings.tsx:31-31
Timestamp: 2025-08-21T05:55:35.187Z
Learning: Cal.com uses an automated i18n system with lingo.dev that automatically propagates new translation keys from en/common.json to all other locale files and creates PRs with proper translations. The system includes a check-missing-translations.ts script that adds English placeholders for missing keys, and a GitHub workflow that triggers lingo.dev automation to translate and create PRs.
⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Install dependencies / Yarn install & cache
🔇 Additional comments (1)
.github/workflows/pr.yml (1)

35-36: Translation-only skip extended correctly

Adding |i18n.lock to the extglob keeps translation-only PRs from triggering heavy jobs; quoting the pattern avoids YAML tag parsing issues. Looks good.

@keithwillcode keithwillcode merged commit 2277d90 into main Sep 3, 2025
122 of 131 checks passed
@keithwillcode keithwillcode deleted the devin/1756913753-skip-translation-ci-checks branch September 3, 2025 16:20
@github-actions
Copy link
Contributor

github-actions bot commented Sep 3, 2025

E2E results are ready!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci area: CI, DX, pipeline, github actions core area: core, team members only foundation ready-for-e2e size/XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants