CI: move parity job from trial account to Flagsmith prod Snowflake with a scoped role

Aperta
#2 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
github-actions, python

Direzione di ricerca

Inizia esaminando il job CI engine-parity, la configurazione Snowflake esistente e i secrets GH del repository. Esegui il provisioning di FS_CI, del ruolo con ambito limitato, dell’utente di servizio, del monitoraggio del warehouse e dell’autenticazione tramite coppia di chiavi, quindi aggiorna i secrets elencati e verifica che i test di parità possano creare e rimuovere le proprie tabelle a ogni esecuzione senza grants più ampi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

The engine-parity CI job currently runs against my personal Snowflake trial account under ACCOUNTADMIN. The current trial account is tied to a personal email and expires; production account with billing is the durable home.

What needs to happen

  1. Provision a CI database + schema in the Flagsmith prod Snowflake account. Suggested layout: a dedicated FS_CI database, scratch schema PUBLIC. The parity tests already create per-run transient IDENTITIES_PARITY_<uuid> / TRAITS_PARITY_<uuid> tables there and drop them on teardown, so concurrent runs don't collide.

  2. Create a least-privilege role for CI, e.g. FS_SQL_ENGINE_CI_RW. Required grants:

    USE ROLE SECURITYADMIN;
    CREATE ROLE FS_SQL_ENGINE_CI_RW;
    
    USE ROLE SYSADMIN;
    GRANT USAGE ON DATABASE FS_CI TO ROLE FS_SQL_ENGINE_CI_RW;
    GRANT USAGE ON SCHEMA FS_CI.PUBLIC TO ROLE FS_SQL_ENGINE_CI_RW;
    GRANT CREATE TABLE ON SCHEMA FS_CI.PUBLIC TO ROLE FS_SQL_ENGINE_CI_RW;
    GRANT USAGE ON WAREHOUSE FS_CI_WH TO ROLE FS_SQL_ENGINE_CI_RW;
    
    GRANT ROLE FS_SQL_ENGINE_CI_RW TO USER <ci-user>;
    ALTER USER <ci-user> SET DEFAULT_ROLE = FS_SQL_ENGINE_CI_RW;
    

    No grants beyond that — the parity tests do CREATE TRANSIENT TABLE, INSERT, SELECT, DROP TABLE and that's it.

  3. Provision a service user for CI (e.g. flagsmith_sql_engine_ci) with key-pair auth. Generate the keypair, register the public key on the user, capture the private key for GH secrets. Disable password auth on the user.

  4. Add a resource monitor on FS_CI_WH capping monthly credit spend (suggest $5-10 / month — current usage is ~$0.05 per CI run, ~$2-5 / month at heavy PR volume).

  5. Update GH secrets in this repo:

    • SNOWFLAKE_ACCOUNT → prod account locator
    • SNOWFLAKE_USERflagsmith_sql_engine_ci
    • SNOWFLAKE_ROLEFS_SQL_ENGINE_CI_RW
    • SNOWFLAKE_WAREHOUSEFS_CI_WH
    • SNOWFLAKE_DATABASEFS_CI
    • SNOWFLAKE_SCHEMAPUBLIC
    • SNOWFLAKE_PRIVATE_KEY → contents of the new key file
Lingua principale
Python
Stelle
1
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Flagsmith/flagsmith-sql-flag-engine

Tutte le issue di Flagsmith/flagsmith-sql-flag-engine

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.