Skip to content

Conversation

@tk-o
Copy link
Contributor

@tk-o tk-o commented Jan 29, 2026

Lite PR

Tip: Review docs on the ENSNode PR process

Summary

  • Added the ENSRainbow Searchlight service instance to
    • Blue env
    • Green env
    • Yellow env

Why


Testing

  • Will test the PR by triggering a release to non-prod environments (Blue and Yellow).

Notes for Reviewer (Optional)

  • I've already added the following ENSNode repository secrets:
    • BLUE_ENSRAINBOW_SEARCHLIGHT_SVC_ID
    • GREEN_ENSRAINBOW_SEARCHLIGHT_SVC_ID

Pre-Review Checklist (Blocking)

  • This PR does not introduce significant changes and is low-risk to review quickly.
  • Relevant changesets are included (or are not required)

Copilot AI review requested due to automatic review settings January 29, 2026 11:47
@changeset-bot
Copy link

changeset-bot bot commented Jan 29, 2026

⚠️ No Changeset found

Latest commit: 049408c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link

vercel bot commented Jan 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
admin.ensnode.io Ready Ready Preview, Comment Jan 29, 2026 11:47am
ensnode.io Ready Ready Preview, Comment Jan 29, 2026 11:47am
ensrainbow.io Ready Ready Preview, Comment Jan 29, 2026 11:47am

@coderabbitai
Copy link

coderabbitai bot commented Jan 29, 2026

📝 Walkthrough

Walkthrough

A new searchlight service variant is introduced for the ENSRAINBOW deployment infrastructure. The GitHub Actions workflow is updated to include the new service identifier throughout deployment phases, while Terraform configuration adds a corresponding module instance with parameterized naming to support multiple service variants.

Changes

Cohort / File(s) Summary
GitHub Actions Workflow
.github/workflows/deploy_ensnode_blue_green.yml
Adds ENSRAINBOW_SEARCHLIGHT_SVC_ID environment secret and propagates it through all deployment steps including environment variable calculation, service image updates for multiple environments (ALPHA, MAINNET, SEPOLIA variants), and final redeployment phases.
Terraform Module Configuration
terraform/main.tf
Introduces new ensrainbow_searchlight module block that instantiates the ensrainbow module with a distinct searchlight variant, using "-searchlight" service suffix and "searchlight" label set ID while maintaining shared environment, region, and version inputs.
Terraform Module Implementation
terraform/modules/ensrainbow/main.tf, terraform/modules/ensrainbow/variables.tf
Parameterizes resource naming by introducing svc_name_suffix variable and appending it to render service and disk names (e.g., ensrainbow → ensrainbow\${var.svc_name_suffix}), enabling flexible service variant instantiation.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A searchlight shines so bright and new,
Through workflows blue and green so true,
With Terraform's fine suffix dance,
We multiply without a glance!
One module spawns a twin so swift,
Our infrastructure's perfect gift!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(infra): introduce ENSRainbow Searchlight service' clearly and specifically describes the main change—introducing a new service instance to the infrastructure.
Description check ✅ Passed The pull request description follows the template structure with all required sections (Summary, Why, Testing, Notes, Pre-Review Checklist) completed with relevant and specific information.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/ensrainbow-searchlight-infra

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

Copilot AI left a 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_suffix variable to the ENSRainbow Terraform module to support multiple service instances
  • Created a new ensrainbow_searchlight module 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.

@tk-o tk-o marked this pull request as ready for review January 29, 2026 14:38
@tk-o tk-o requested a review from a team as a code owner January 29, 2026 14:38
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 29, 2026

Greptile Overview

Greptile Summary

Added ENSRainbow Searchlight service to Blue, Green, and Yellow environments by extending the existing ensrainbow Terraform module with a svc_name_suffix parameter.

Changes:

  • Modified ensrainbow module to support multiple instances via svc_name_suffix parameter (applies to both service and disk names)
  • Created ensrainbow_searchlight module instance in Terraform with hardcoded "searchlight" label set ID
  • Updated Blue/Green deployment workflow to include ENSRAINBOW_SEARCHLIGHT_SVC_ID secrets and deployment steps
  • Yellow environment deployment uses Terraform and will automatically provision the Searchlight instance

Notes:

  • The Searchlight instance uses the same ENSRainbow Docker image but with a different label set configuration
  • The PR mentions testing will occur via release to Blue and Yellow environments
  • ENSIndexers continue to reference only the original ensrainbow_url from terraform/main.tf:138

Confidence Score: 4/5

  • This PR is safe to merge with low risk
  • Infrastructure changes follow established patterns and are well-scoped. The module design cleanly supports multiple ENSRainbow instances. Minor uncertainty exists around whether indexers should reference the new Searchlight instance, but this appears intentional based on the label set configuration.
  • Verify that terraform/main.tf correctly configures which services should connect to the Searchlight instance vs the original ENSRainbow instance

Important Files Changed

Filename Overview
.github/workflows/deploy_ensnode_blue_green.yml Added ENSRainbow Searchlight service deployment for Blue and Green environments, including secret references and redeploy logic
terraform/main.tf Added ensrainbow_searchlight module instance with hardcoded "searchlight" label set ID, but indexers still reference only the original ENSRainbow URL

Sequence Diagram

sequenceDiagram
    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
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a 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

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 29, 2026

Additional Comments (1)

terraform/main.tf
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.

Prompt To Fix With AI
This 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.

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