Author SHA1 Message Date
sharang af13f054e4 Merge pull request 'ci: push images to Harbor (repo.meghsakha.com) + cosign' (#16) from ci/harbor-repo-meghsakha into main
ci / e2e (push) Canceled after 0s
ci / shared (push) Successful in 12s
ci / test (push) Successful in 10m17s
ci / image (push) Canceled after 0s
2026-07-21 12:14:29 +00:00
sharang 0a4af3b758 ci: push to Harbor (repo.meghsakha.com) + cosign signing
ci / shared (pull_request) Successful in 23s
ci / e2e (pull_request) Canceled after 0s
ci / test (pull_request) Successful in 10m22s
ci / image (pull_request) Skipped
2026-07-21 10:56:36 +00:00
sharang 5856c1c732 feat(portal): allow PORTAL_APEX_HOSTS env to extend APEX_HOSTS (#15)
ci / shared (push) Successful in 12s
ci / test (push) Successful in 10m17s
ci / e2e (push) Has been skipped
ci / image (push) Has been skipped
2026-06-10 12:05:51 +00:00
sharang 0862420e7c ci(portal): retarget image build to registry.meghsakha.com + orca webhook (#14)
ci / shared (push) Successful in 14s
ci / test (push) Successful in 10m18s
ci / e2e (push) Has been skipped
ci / image (push) Has been skipped
2026-06-10 12:05:37 +00:00
2 changed files with 22 additions and 5 deletions
+8 -4
View File
@@ -8,6 +8,10 @@ on:
push:
branches: [main]
env:
COSIGN_KEY: ${{ secrets.COSIGN_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
jobs:
shared:
runs-on: docker
@@ -110,7 +114,7 @@ jobs:
image:
# Builds the portal image and ships it through the same path every
# other service in orca-infra uses: push :latest + :sha-<sha> to
# registry.meghsakha.com, then POST a github-style payload to the
# repo.meghsakha.com, then POST a github-style payload to the
# orca webhook so the master pulls and redeploys breakpilot-portal.
#
# Webhook target (registered once on the master via
@@ -124,15 +128,15 @@ jobs:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: registry.meghsakha.com
registry: repo.meghsakha.com
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASS }}
- uses: docker/build-push-action@v6
with:
push: true
tags: |
registry.meghsakha.com/breakpilot/portal:latest
registry.meghsakha.com/breakpilot/portal:sha-${{ github.sha }}
repo.meghsakha.com/breakpilot/portal:latest
repo.meghsakha.com/breakpilot/portal:sha-${{ github.sha }}
- name: trigger orca redeploy
# Signs the POST with HMAC-SHA256 over the JSON body using the
# secret orca generated when the webhook was registered. Orca's
+14 -1
View File
@@ -11,7 +11,20 @@ export type HostMatch =
| { kind: "unknown" };
// Longest-first so `stage.breakpilot.com` is matched before `breakpilot.com`.
const APEX_HOSTS = ["stage.breakpilot.com", "breakpilot.com", "localhost"];
// Built-ins cover dev (localhost) + the canonical breakpilot.com targets.
// PORTAL_APEX_HOSTS is a comma-separated env override for per-environment
// hosts (e.g. portal-dev.meghsakha.com while breakpilot.com isn't registered).
const APEX_HOSTS = (() => {
const base = ["stage.breakpilot.com", "breakpilot.com", "localhost"];
const extra = (process.env.PORTAL_APEX_HOSTS ?? "")
.split(",")
.map((h) => h.trim().toLowerCase())
.filter(Boolean);
// Longest-first to keep the suffix-strip loop correct.
return Array.from(new Set([...extra, ...base])).sort(
(a, b) => b.length - a.length,
);
})();
const APEX_SET = new Set(APEX_HOSTS);
export function parseHost(host: string | null | undefined): HostMatch {