Flagsmith / Flagsmith/flagsmith-sql-flag-engine

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

オープン
#2 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
1
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

説明

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_` / `TRAITS_PARITY_` 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:

```sql
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 ;
ALTER 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_USER` → `flagsmith_sql_engine_ci`
- `SNOWFLAKE_ROLE` → `FS_SQL_ENGINE_CI_RW`
- `SNOWFLAKE_WAREHOUSE` → `FS_CI_WH`
- `SNOWFLAKE_DATABASE` → `FS_CI`
- `SNOWFLAKE_SCHEMA` → `PUBLIC`
- `SNOWFLAKE_PRIVATE_KEY` → contents of the new key file

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。