ワンクリックで
safe-push
// Safe Push process for pushing changes to the IntelliJ repository. Use when pushing code changes to remote.
// Safe Push process for pushing changes to the IntelliJ repository. Use when pushing code changes to remote.
Safe Push process for pushing changes to the IntelliJ repository. Use when pushing code changes to remote.
Accessibility review guidance for any UI that appears in IntelliJ-based IDEs, including platform UI, product UI, and plugin UI across all UI stacks. Use when creating, editing, or reviewing UI components, dialogs, settings panels, tool windows, popups, forms, custom components, keyboard navigation, focus behavior, labels/names/descriptions, validation, dynamic feedback, color contrast, scaling, or screen reader support.
Accessibility review guidance for any UI that appears in IntelliJ-based IDEs, including platform UI, product UI, and plugin UI across all UI stacks. Use when creating, editing, or reviewing UI components, dialogs, settings panels, tool windows, popups, forms, custom components, keyboard navigation, focus behavior, labels/names/descriptions, validation, dynamic feedback, color contrast, scaling, or screen reader support.
Convert Product DSL module sets into generated plugin wrappers and handle the surrounding generation flow. Use when pluginizing a module set like `recentFiles` or `grid.core`, updating bundled plugin registration, regenerating wrapper artifacts, fixing validation/build ordering bugs where wrapper plugin descriptors are needed before generated files exist on disk, or fixing tests whose plugin loading logs show missing generated module-set wrapper plugins.
Convert Product DSL module sets into generated plugin wrappers and handle the surrounding generation flow. Use when pluginizing a module set like `recentFiles` or `grid.core`, updating bundled plugin registration, regenerating wrapper artifacts, fixing validation/build ordering bugs where wrapper plugin descriptors are needed before generated files exist on disk, or fixing tests whose plugin loading logs show missing generated module-set wrapper plugins.
Comprehensive testing reference for running tests in IntelliJ codebase via tests.cmd. Use when running, debugging, or troubleshooting test execution.
| name | safe-push |
| description | Safe Push process for pushing changes to the IntelliJ repository. Use when pushing code changes to remote. |
This guide covers the Safe Push process for pushing changes to the IntelliJ repository.
Safe Push is a system that ensures code changes pass all required tests before being merged to protected branches (like master). It's powered by Patronus.
The safePush.cmd script in the repository root provides command-line access to Safe Push without needing the IDE.
# Push current HEAD to master (most common)
./safePush.cmd HEAD:master
# Push specific commit to master
./safePush.cmd <commit-hash>:master
# Push from feature branch to master
./safePush.cmd HEAD:master # while on feature branch
# Dry run (test without pushing)
./safePush.cmd -dry-run HEAD:master
-autosquash Automatically squash fixup! commits (default true)
-dry-run Run tests without push
-emergency Skip tests and push directly (USE ONLY IN EMERGENCIES)
-verbose Verbose output
-help Print help
After starting a Safe Push you'll receive a Patronus URL like:
https://patronus.labs.jb.gg/robot/<uuid>
Always print this URL back to the user — it is their primary handle for the run (link to share, cancel button, restore-branch button). The <uuid> segment is the robot id.
You can also track the Safe Push directly: check current status, enumerate failing checks, drill into a specific attempt, or babysit a long-running robot until it finishes. All of that is in the [[patronus]] skill — pick it up when the user asks for status or when offering to follow up. It's reasonable to proactively suggest tracking or babysitting once the Safe Push is in flight; the user can say no. The [[patronus]] skill also documents the hand-off to [[teamcity-cli]] when an individual TC build needs deeper inspection.
Cancel and restore-branch actions stay in the browser.
Use ./safePush.cmd -emergency ONLY for:
DO NOT use Emergency Push for:
When writing tests that spawn external processes (like bazel.cmd), ensure required environment variables are passed:
// In BUILD.bazel for java_test targets:
env_inherit = [
"LOCALAPPDATA", // Windows
"PROCESSOR_ARCHITECTURE", // Windows
"USERPROFILE", // Windows
"HOME", // Unix/macOS - required for bazel cache directory
],
The Bazel sandbox does NOT inherit environment variables by default. Use env_inherit to explicitly pass variables from the host environment to tests.
#ij-builds Slack channel for infrastructure issues#ij-qa-watch#patronus-support, #ij-builds, #ij-qa-watch