-
Notifications
You must be signed in to change notification settings - Fork 16
feat(infra): introduce ENSRainbow Searchlight service #1579
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
🦋 Changeset detectedLatest commit: b3af2bc The changes in this PR will be included in the next version bump. This PR includes changesets to release 18 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📝 WalkthroughWalkthroughAdds a "searchlight" ENSRAINBOW variant: CI workflows and routing steps are extended to handle a new ENSRAINBOW_SEARCHLIGHT service ID, Terraform gains a new module instance and a svc_name_suffix variable to instantiate the variant, and docs + a changeset are updated to list the new instance. Changes
Sequence Diagram(s)sequenceDiagram
participant CI as CI (GitHub Actions)
participant Render as Render API
participant Redis as Redis (Traefik routing)
participant TF as Terraform
CI->>Render: calculate env vars (include ENSRAINBOW_SEARCHLIGHT_SVC_ID)
CI->>Render: update_service_image (ensrainbow-searchlight)
CI->>Render: redeploy_service (ensrainbow-searchlight)
CI->>Redis: set ensrainbow-searchlight-api-router -> ${TARGET_ENVIRONMENT}-ensrainbow-searchlight-api
TF->>Render: create/ensure ensrainbow-searchlight service (svc_name_suffix = "-searchlight")
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 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)
Comment |
There was a problem hiding this comment.
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 introduces a second ENSRainbow service instance called "Searchlight" to Blue, Green, and Yellow environments. The implementation adds a configurable suffix mechanism to the ENSRainbow Terraform module, enabling multiple instances of the service to coexist with different configurations.
Changes:
- Added a
svc_name_suffixvariable to the ENSRainbow Terraform module to support multiple service instances - Created a new
ensrainbow_searchlightmodule instance with label set ID "searchlight" - Updated Blue/Green deployment workflows to manage the new Searchlight service alongside the original ENSRainbow service
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| terraform/modules/ensrainbow/variables.tf | Added svc_name_suffix variable with empty string default to support service name customization |
| terraform/modules/ensrainbow/main.tf | Applied suffix to service and disk names to enable multiple instances |
| terraform/main.tf | Created ensrainbow_searchlight module instance with "-searchlight" suffix and "searchlight" label set ID |
| .github/workflows/deploy_ensnode_blue_green.yml | Added ENSRAINBOW_SEARCHLIGHT_SVC_ID secrets, deployment steps, and improved alignment formatting |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Greptile OverviewGreptile SummaryAdded ENSRainbow Searchlight service to Blue, Green, and Yellow environments by extending the existing Changes:
Notes:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Dev as Developer
participant GH as GitHub Actions
participant Railway as Railway Platform
participant Render as Render Platform
participant TF as Terraform
Note over Dev,TF: Blue/Green Deployment Flow
Dev->>GH: Trigger workflow_dispatch<br/>(target: blue/green, tag: version)
GH->>GH: Validate Docker images exist
GH->>GH: Set environment variables<br/>(ENSRAINBOW_SEARCHLIGHT_SVC_ID)
GH->>Railway: Update service images<br/>(incl. ENSRAINBOW_SEARCHLIGHT)
GH->>Railway: Redeploy all services<br/>(incl. ENSRAINBOW_SEARCHLIGHT)
Railway-->>GH: Deployment complete
Note over Dev,TF: Yellow Deployment Flow (Terraform)
Dev->>GH: Trigger workflow_dispatch<br/>(tag: version)
GH->>GH: Validate Docker images exist
GH->>TF: terraform init/plan/apply
TF->>Render: Create ensrainbow_searchlight module
Note over TF,Render: ensrainbow-searchlight service<br/>disk: ensrainbow-data-searchlight<br/>label_set_id: "searchlight"
TF->>Render: Update existing ensrainbow service
Render-->>TF: Services deployed
TF-->>GH: Terraform apply complete
Note over Dev,Render: Existing ENSIndexers still reference<br/>only original ensrainbow URL
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2 files reviewed, 1 comment
Additional Comments (1)
Prompt To Fix With AIThis is a comment left during a code review.
Path: terraform/main.tf
Line: 138:138
Comment:
Indexers still reference only `module.ensrainbow.ensrainbow_url`. Check whether they should also connect to the Searchlight instance, or if the Searchlight service is intended for a different client.
How can I resolve this? If you propose a fix, please make it concise. |
…ENSRainbow Instances_ page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
lightwalker-eth
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tk-o Hey thanks for the updates here! Upon review I thought of some other important details. Reviewed and shared feedback 👍
|
|
||
| # Configuration for the Searchlight instance | ||
| ensrainbow_label_set_id = "searchlight" | ||
| ensrainbow_label_set_version = var.ensrainbow_label_set_version |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We'll want to be able to independently evolve the label set version used by the "subgraph" instance of ENSRainbow vs the "searchlight" instance.
Also, it will be great if in this PR we could also make configuration updates to the following ENSNode instances to make use of ENSRainbow "searchlight":
- Alpha
- Alpha Sepolia
- V2 Sepolia
In other words, we have two ENSRainbow instances, one for "subgraph" and one for "searchlight".
The "subgraph" instance can forever be pinned to using label_set_version 0. While the "searchlight" instance can forever be pinned to using "label_set_id" of "searchlight" but it needs to be able to easily evolve its "label_set_version" across time.
Then, each ENSIndexer instance needs to be configured to use the correct ENSRainbow instance. The "subgraph-style" instances need to use the "subgraph" instance of ENSRainbow, while the "alpha-style" and "v2-style" instances need to use the "searchlight" instance of ENSRainbow.
| default = "" | ||
| } | ||
|
|
||
| variable "ensrainbow_label_set_id" { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please see my related comment on how each ENSRainbow instance needs an independent config for label_set_id and label_set_version.
Lite PR
Tip: Review docs on the ENSNode PR process
Summary
Why
Testing
Notes for Reviewer (Optional)
BLUE_ENSRAINBOW_SEARCHLIGHT_SVC_IDGREEN_ENSRAINBOW_SEARCHLIGHT_SVC_IDPre-Review Checklist (Blocking)