Add service update command and tighten CI change detection#818
Add service update command and tighten CI change detection#818forstmeier merged 2 commits intomasterfrom
Conversation
Add `mask infrastructure service update <service_name>` command to force-redeploy an ECS service on demand. This provides a straightforward way to pick up new model artifacts (e.g. a freshly trained TiDE model) without requiring a code change to trigger the deploy pipeline. Remove maskfile.md from the Rust and Python change detection filters in the CI workflow. Changes to maskfile.md only warranted running those checks if the mask development commands themselves were broken, which is a narrow and incomplete guarantee since most mask commands interact with external systems that cannot be exercised in CI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
📝 WalkthroughWalkthroughRemoved Changes
Sequence Diagram(s)sequenceDiagram
participant Dev as Developer (runs command)
participant Mask as Maskfile CLI
participant Pulumi as Pulumi (config/stack)
participant AWS as AWS ECS
Dev->>Mask: service update <service_name>
Mask->>Pulumi: read default org (fail w/ guidance if unset)
Pulumi-->>Mask: organization_name
Mask->>Pulumi: select stack `${organization_name}/fund/production`
Pulumi-->>Mask: stack outputs (aws_ecs_cluster_name)
Mask->>Mask: validate service_name (data-manager|portfolio-manager|ensemble-manager)
Mask->>AWS: aws ecs update-service --force-new-deployment (service="fund-<service>-server")
AWS-->>Mask: update acknowledged
Mask->>AWS: aws ecs wait services-stable
AWS-->>Mask: service stable
Mask->>Dev: print completion
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsTimed out fetching pipeline failures after 30000ms 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. Comment |
Greptile SummaryThis PR adds a Confidence Score: 5/5This PR is safe to merge — no P0 or P1 issues found. All changes are additive, follow existing codebase patterns, and are correctly scoped. The new command covers exactly the three Pulumi-defined ECS services, uses the established naming convention, and mirrors the operation ordering of the existing No files require special attention.
|
| Filename | Overview |
|---|---|
| maskfile.md | Adds service update subcommand for ECS force-redeploy; fixes error message wording from <org> to <organization> for consistency. |
| .github/workflows/run_code_checks.yaml | Removes maskfile.md from Rust and Python change-detection path filters; file still triggers the markdown check job. |
Reviews (2): Last reviewed commit: "Add bot pull request feedback" | Re-trigger Greptile
There was a problem hiding this comment.
Pull request overview
Adds an on-demand Mask command to force-redeploy an ECS service (to pick up new artifacts without a code-triggered deploy), and updates CI change detection so Rust/Python checks don’t run solely due to maskfile.md edits.
Changes:
- Add
mask infrastructure service update <service_name>to force a new ECS deployment and wait for service stability. - Remove
maskfile.mdfrom Rust and Pythonpaths-filtertriggers in the code-checks workflow.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
maskfile.md |
Adds an ECS service force-redeploy command and tweaks a Pulumi org error message placeholder. |
.github/workflows/run_code_checks.yaml |
Tightens Rust/Python change filters by excluding maskfile.md. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Warning
CodeRabbit couldn't request changes on this pull request because it doesn't have sufficient GitHub permissions.
Please grant CodeRabbit Pull requests: Read and write permission and re-run the review.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@maskfile.md`:
- Around line 438-445: Validate the service_name value before using it to build
the service variable and before calling aws ecs update-service/aws ecs wait; add
a local whitelist (the same allowed service names used by the deploy command)
and check that service_name exists in that list, and if not print a clear error
and exit non‑zero so we fail fast. Ensure the validation happens prior to the
line that sets service="fund-${service_name}-server" and before invoking aws ecs
update-service/aws ecs wait so no external API calls are made for unsupported
service names.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 0d76b6f3-039b-4dc3-ac06-5cd137e0f7b3
📒 Files selected for processing (2)
.github/workflows/run_code_checks.yamlmaskfile.md
💤 Files with no reviewable changes (1)
- .github/workflows/run_code_checks.yaml
There was a problem hiding this comment.
Warning
CodeRabbit couldn't request changes on this pull request because it doesn't have sufficient GitHub permissions.
Please grant CodeRabbit Pull requests: Read and write permission and re-run the review.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@maskfile.md`:
- Around line 427-435: The Pulumi stack-resolution logic (checking pulumi org
default, erroring, selecting stack and reading outputs via organization_name and
cluster) is duplicated; extract it into a reusable helper (e.g.,
get_pulumi_stack or resolve_pulumi_stack) and call it from both this block and
the existing deploy flow: move the org check (pulumi org get-default), the error
message for missing default org, the pulumi stack select
"${organization_name}/fund/production", and the pulumi stack output
aws_ecs_cluster_name retrieval into that helper, return or export the cluster
value, and replace the duplicated code with a single call to that helper in both
places so future changes are centralized.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
Overview
Changes
mask infrastructure service update <service_name>command to force-redeploy an ECS service on demand, providing a way to pick up new model artifacts without requiring a code change to trigger the deploy pipelinemaskfile.mdfrom the Rust and Python change detection filters in the CI workflowContext
maskfile.mdchanges only warranted running Rust and Python checks if the mask development commands themselves were broken — a narrow and incomplete guarantee since most mask commands interact with external systems that cannot be exercised in CI. The file still triggers the Markdown check job.The new
service updatecommand addresses a gap where a freshly trained TiDE model would not be picked up by the ensemble manager until the ECS service was restarted, which previously required a code change to trigger a redeployment.Summary by CodeRabbit
New Features
Chores