FEAT: Migration secrets CI — Vault → Infisical dédié Forgejo #104

Closed
opened 2026-08-12 11:36:35 +02:00 by nonobis · 0 comments
Owner

Contexte

Les templates CI utilisent HashiCorp Vault (OIDC) pour injecter les secrets (vault-secrets). Une instance Infisical dédiée pour le Forgejo remplace le Vault.

Architecture validée (2026-08-12)

  • Credentials Infisical = secrets Forgejo : VAULT_URL, VAULT_CLIENT_ID, VAULT_CLIENT_SECRET
    (déjà créés dans nonobis/templates — ⚠️ voir la contrainte repo ci-dessous)
  • Secrets métier dans l'Infisical dédié : SONARQUBE_URL, SONARQUBE_TOKEN, DOCKER_USERNAME, DOCKER_PASSWORD, REGISTRY_URL, REGISTRY_USER, REGISTRY_TOKEN, FORGEJO_TOKEN…
  • Les builds passent par l'action infisical-secrets : auth universal-auth (client-id/secret depuis les secrets Forgejo) → export du projet Infisical → injection $GITHUB_ENV.

⚠️ Contrainte technique Forgejo (vérifiée)

Les secrets d'un repo ne sont PAS accessibles depuis les workflows des AUTRES repos.
VAULT_URL/VAULT_CLIENT_ID/VAULT_CLIENT_SECRET créés dans templates ne sont donc pas lisibles par les workflows Heimdall/Sleipnir/Njord.
➡️ Action requise : déclarer ces 3 secrets au niveau organisation nonobis (Settings → Actions → Secrets, une seule fois, accessible par tous les repos) — OU les dupliquer dans chaque repo projet.

Fait (templates, prêt à l'emploi)

  • Action infisical-secrets : universal-auth → injection $GITHUB_ENV (délimiteur EOF)
  • ci-full / ci-release : input secrets-provider (vault défaut | infisical) + inputs infisical-domain/project-id/client-id/client-secret/env
  • README templates : section Secrets documentée

À faire

  • (Utilisateur) Créer les org secrets nonobis : VAULT_URL, VAULT_CLIENT_ID, VAULT_CLIENT_SECRET (ou par repo)
  • Déployer l'instance Infisical dédiée Forgejo (URL : à définir)
  • Créer le projet CI (ex. forgejo-ci) + env prod
  • Créer une machine identity par projet (heimdall-ci, sleipnir-ci, njord-ci) rôle Read
  • Déposer les secrets métier : SONARQUBE_URL, SONARQUBE_TOKEN, Docker, Registry…
  • Basculer les ci.yml/release.yml des projets sur secrets-provider: infisical (inputs depuis secrets.*)
  • Supprimer les politiques Vault *-ci une fois la bascule validée

Critères d'acceptation

  • Un run CI Heimdall passe avec secrets-provider: infisical (secrets lus depuis Forgejo + Infisical)
  • SonarQube actif via SONARQUBE_URL/SONARQUBE_TOKEN (#101)
  • Rétrocompat : secrets-provider: vault continue de fonctionner

Référence

Templates : infisical-secrets, ci-full, ci-release. Skill : infisical (instance Hermes) — section instance dédiée Forgejo ajoutée.

## Contexte Les templates CI utilisent HashiCorp Vault (OIDC) pour injecter les secrets (`vault-secrets`). Une **instance Infisical dédiée pour le Forgejo** remplace le Vault. ## Architecture validée (2026-08-12) - **Credentials Infisical = secrets Forgejo** : `VAULT_URL`, `VAULT_CLIENT_ID`, `VAULT_CLIENT_SECRET` (déjà créés dans `nonobis/templates` — ⚠️ voir la contrainte repo ci-dessous) - **Secrets métier dans l'Infisical dédié** : `SONARQUBE_URL`, `SONARQUBE_TOKEN`, `DOCKER_USERNAME`, `DOCKER_PASSWORD`, `REGISTRY_URL`, `REGISTRY_USER`, `REGISTRY_TOKEN`, `FORGEJO_TOKEN`… - **Les builds** passent par l'action `infisical-secrets` : auth universal-auth (client-id/secret depuis les secrets Forgejo) → export du projet Infisical → injection `$GITHUB_ENV`. ## ⚠️ Contrainte technique Forgejo (vérifiée) Les **secrets d'un repo ne sont PAS accessibles depuis les workflows des AUTRES repos**. `VAULT_URL`/`VAULT_CLIENT_ID`/`VAULT_CLIENT_SECRET` créés dans `templates` ne sont donc pas lisibles par les workflows Heimdall/Sleipnir/Njord. ➡️ **Action requise** : déclarer ces 3 secrets au niveau **organisation `nonobis`** (Settings → Actions → Secrets, une seule fois, accessible par tous les repos) — OU les dupliquer dans chaque repo projet. ## Fait (templates, prêt à l'emploi) - Action `infisical-secrets` : universal-auth → injection `$GITHUB_ENV` (délimiteur EOF) - `ci-full` / `ci-release` : input `secrets-provider` (`vault` défaut | `infisical`) + inputs `infisical-domain/project-id/client-id/client-secret/env` - README templates : section Secrets documentée ## À faire - [ ] **(Utilisateur)** Créer les org secrets `nonobis` : `VAULT_URL`, `VAULT_CLIENT_ID`, `VAULT_CLIENT_SECRET` (ou par repo) - [ ] Déployer l'instance Infisical dédiée Forgejo (URL : à définir) - [ ] Créer le projet CI (ex. `forgejo-ci`) + env prod - [ ] Créer une machine identity par projet (heimdall-ci, sleipnir-ci, njord-ci) rôle Read - [ ] Déposer les secrets métier : `SONARQUBE_URL`, `SONARQUBE_TOKEN`, Docker, Registry… - [ ] Basculer les ci.yml/release.yml des projets sur `secrets-provider: infisical` (inputs depuis `secrets.*`) - [ ] Supprimer les politiques Vault `*-ci` une fois la bascule validée ## Critères d'acceptation - [ ] Un run CI Heimdall passe avec `secrets-provider: infisical` (secrets lus depuis Forgejo + Infisical) - [ ] SonarQube actif via `SONARQUBE_URL`/`SONARQUBE_TOKEN` (#101) - [ ] Rétrocompat : `secrets-provider: vault` continue de fonctionner ## Référence Templates : `infisical-secrets`, `ci-full`, `ci-release`. Skill : `infisical` (instance Hermes) — section instance dédiée Forgejo ajoutée.
nonobis added reference ci/refonte-multi-workflows 2026-08-17 09:47:33 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#104
No description provided.