mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-21 22:52:19 +03:00
Passo 10 of the Radar go-live: publish the OmniRoute catalog export the Radar
server consumes to a stable URL, so the 1 GB-RAM private server pulls it via
RADAR_EXPORT_URL instead of depending on the deploy-time snapshot.
- scripts/release/radar-export.mjs: emits {geradoEm, budgets, totais, registry,
provenance} from the catalog config modules. Provenance (sourceCommit,
sourceRef, runUrl, generatedBy) is never fabricated — unknown fields stay null.
- .github/workflows/radar-export.yml: on main catalog changes / manual dispatch /
weekly, generates the export and clobbers the stable 'radar-export-latest'
release asset (gh release, GH_TOKEN — checkout persist-credentials:false).
- tests/unit/radar-export.test.mjs: consumer contract (budgets[] non-empty) +
provenance null-when-unknown + GitHub-env reflection.
Stable URL for RADAR_EXPORT_URL:
https://github.com/diegosouzapw/OmniRoute/releases/download/radar-export-latest/export-omniroute.json
Re-baselines zizmorFindings 190->192 (+2 unpinned-uses @vN, the repo-wide
deliberate convention; artipacked auto-fixed).
Co-authored-by: Xiangzhe <bakryun0718@proton.me>
65 lines
2.6 KiB
YAML
65 lines
2.6 KiB
YAML
# Publica o export estável do catálogo consumido pelo OmniRoute Radar numa URL
|
|
# fixa (asset de release `radar-export-latest`), para o servidor privado do Radar
|
|
# (1 GB RAM, nunca clona/builda o OmniRoute) baixá-lo via `RADAR_EXPORT_URL` em
|
|
# vez de depender do snapshot gravado no deploy. Fonte: scripts/release/radar-export.mjs.
|
|
#
|
|
# A URL estável resultante (definir em RADAR_EXPORT_URL no .env do radar-server):
|
|
# https://github.com/diegosouzapw/OmniRoute/releases/download/radar-export-latest/export-omniroute.json
|
|
name: Radar Export
|
|
|
|
on:
|
|
workflow_dispatch: # o operador pode publicar sob demanda (de qualquer ref)
|
|
push:
|
|
branches: [main] # produção: só o catálogo do main clobra o asset estável
|
|
paths:
|
|
- open-sse/config/freeModelCatalog.data.ts
|
|
- open-sse/config/freeModelCatalog.ts
|
|
- open-sse/config/providerRegistry.ts
|
|
- open-sse/config/providers/**
|
|
- scripts/release/radar-export.mjs
|
|
- .github/workflows/radar-export.yml
|
|
schedule:
|
|
- cron: "17 6 * * 1" # semanal (segunda 06:17 UTC): mantém geradoEm/proveniência frescos
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: radar-export-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
CI_NODE_VERSION: "24"
|
|
|
|
jobs:
|
|
publish-export:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write # gh release upload — clobra o asset estável do export
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
persist-credentials: false # publish usa GH_TOKEN via gh release, não a credencial do checkout
|
|
- uses: actions/setup-node@v7
|
|
with:
|
|
node-version: ${{ env.CI_NODE_VERSION }}
|
|
cache: npm
|
|
- run: npm ci
|
|
- name: Generate catalog export with provenance
|
|
run: node --import tsx/esm scripts/release/radar-export.mjs "$RUNNER_TEMP/export-omniroute.json"
|
|
- name: Publish to the stable release asset
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
set -euo pipefail
|
|
TAG="radar-export-latest"
|
|
# Cria o release estável na primeira vez; nas seguintes só re-anexa o asset.
|
|
if ! gh release view "$TAG" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
|
|
gh release create "$TAG" \
|
|
--repo "$GITHUB_REPOSITORY" \
|
|
--title "Radar catalog export (rolling)" \
|
|
--notes "Export estável do catálogo OmniRoute para o Radar. Atualizado automaticamente; NÃO é um release de versão do produto." \
|
|
--latest=false
|
|
fi
|
|
gh release upload "$TAG" "$RUNNER_TEMP/export-omniroute.json" --repo "$GITHUB_REPOSITORY" --clobber
|