Skip to content

Feature: Optional ngrok and have self host dns with one endpoint per runner/commit id #21

@rajuversespace

Description

@rajuversespace

We should add a GitHub Actions workflow with optional ngrok API key add self-host DNS with one endpoint per commit/runner-id.
This will allow user to manually approve without a new clone from HEAD branch and allow approver, keeping the commit stable while approving for TF Apply

✅ Acceptance Criteria

  • Mode Selection: Users can toggle between ngrok (default) and self-hosted using the portal-host-mode input.
  • Custom Network Binding: The action successfully binds the internal web server to a user-defined IP and port via the selfhosted-listen-address parameter.
  • Public URL Injection: The interactive portal correctly generates and displays the URL using the provided selfhosted-public-url instead of a dynamic ngrok address.
  • Endpoint Isolation: Support for runner-endpoint-key ensures that multiple concurrent runners can share the same public DNS/IP without URL collisions (e.g., https://dns.com/run-1 vs https://dns.com/run-2).
  • Notification Accuracy: Slack and Discord notifications correctly broadcast the custom self-hosted URL to stakeholders.
  • Backward Compatibility: If no self-hosted parameters are provided, the action continues to function with ngrok as the fallback, ensuring zero breaking changes for existing users.

🌟 Why This Matters

  • Security & Compliance: Allows teams to run interactive inputs within private networks or behind internal load balancers, keeping traffic off third-party tunneling servers.
  • Infrastructure Control: Gives team full control over the networking stack, including SSL termination and traffic logging at the reverse proxy level.
  • Cost Efficiency: Removes the dependency on paid ngrok tiers for features like reserved domains or increased tunnel limits.

🙋 This workflow is already in-use internally. If you’d like, can open a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions