Skip to main content

release

Use when preparing a release, checking what needs releasing, determining version bumps, auditing unreleased changes across engines and client SDKs, or when the user asks "what needs to be released" or "do we need a release".

설치로 이동

소스 정보

저장소
flipt-io/flipt-client-sdks
최근 소스 활동
2026년 6월 18일 12:53
감지된 SKILL.md 언어
영어
스타
29
포크
31

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
release
description
Use when preparing a release, checking what needs releasing, determining version bumps, auditing unreleased changes across engines and client SDKs, or when the user asks "what needs to be released" or "do we need a release".
# Release Audit unreleased changes across engines and client SDKs, determine version bumps, and identify what needs releasing. ## Overview This monorepo has three release layers that must be released in order: 1. **Engines** (Rust crates) - must be released first, SDKs depend on them 2. **FFI-based SDKs** - depend on `flipt-engine-ffi` binaries published to GitHub releases 3. **WASM/WASM-JS SDKs** - depend on `flipt-engine-wasm` / `flipt-engine-wasm-js` artifacts **Important JS ordering:** `flipt-client-react` has a peer dependency on `@flipt-io/flipt-client-js`. When releasing both JS and React SDKs, do **not** publish them in parallel. Release `flipt-client-js` first, then bump `@flipt-io/flipt-client-js` in `flipt-client-react/package.json`, then release `flipt-client-react`. ## Step 1: Audit Engine Changes ### Find last engine release tags Each engine has its own tag namespace: ```bash # FFI engine (triggers: package-ffi-engine-{darwin,linux,windows,android,ios}.yml) git tag --sort=-creatordate | grep "flipt-engine-ffi-v" | head -5 # WASM engine (triggers: package-wasm-engine.yml) git tag --sort=-creatordate | grep "flipt-engine-wasm-v" | head -5 # WASM-JS engine (triggers: package-wasm-js-engine.yml) git tag --sort=-creatordate | grep "flipt-engine-wasm-js-v" | head -5 ``` ### List unreleased engine commits ```bash # Changes to engine code since last FFI release git log --oneline <last-ffi-tag>..HEAD --no-merges -- flipt-evaluation/ flipt-engine-ffi/ # Changes to WASM engine since last WASM release git log --oneline <last-wasm-tag>..HEAD --no-merges -- flipt-evaluation/ flipt-engine-wasm/ # Changes to WASM-JS engine since last WASM-JS release git log --oneline <last-wasm-js-tag>..HEAD --no-merges -- flipt-evaluation/ flipt-engine-wasm-js/ ``` ### Check current versions ```bash grep '^version' flipt-evaluation/Cargo.toml flipt-engine-ffi/Cargo.toml flipt-engine-wasm/Cargo.toml flipt-engine-wasm-js/Cargo.toml ``` ### Determine version bumps (semver) - **fix** only -> patch bump - **feat** or new capability -> minor bump - Breaking API change -> major bump Only bump crates that have actual changes. `flipt-evaluation` only needs a bump if commits touched `flipt-evaluation/` directly. ## Step 2: Audit Client SDK Changes For each SDK, find its latest release tag and list unreleased commits: ```bash git tag --sort=-creatordate | grep "flipt-client-" | head -30 git log --oneline <last-sdk-tag>..HEAD --no-merges -- <sdk-directory>/ ``` ### SDK reference table | SDK | Directory | Tag Prefix | Engine Dependency | |-----|-----------|------------|-------------------| | Python | `flipt-client-python/` | `flipt-client-python-v` | FFI | | Ruby | `flipt-client-ruby/` | `flipt-client-ruby-v` | FFI | | Java | `flipt-client-java/` | `flipt-client-java-v` | FFI | | C# | `flipt-client-csharp/` | `flipt-client-csharp-v` | FFI | | Dart | `flipt-client-dart/` | `flipt-client-dart-v` | FFI | | Kotlin Android | `flipt-client-kotlin-android/` | `flipt-client-kotlin-android-v` | FFI | | Swift | `flipt-client-swift/` | `flipt-client-swift-v` | FFI | | Go | `flipt-client-go/` | `flipt-client-go-v` | WASM | | JS | `flipt-client-js/` | `flipt-client-js-v` | WASM-JS | | React | `flipt-client-react/` | `flipt-client-react-v` | WASM-JS + peer dependency on `@flipt-io/flipt-client-js` | ## Step 3: Categorize and Prioritize Present a summary table classifying each SDK: - **Must release**: Has feat/fix commits in its own directory (someone contributed a fix and it's not released yet) - **Should release**: Benefits from engine bump + has dep updates - **No release needed**: No changes since last release, no engine bump affects it ### Output format ``` ## Engine Release Status | Engine | Current Version | Last Tag | Unreleased Commits | Bump Needed | |--------|----------------|----------|-------------------|-------------| ## SDK Release Status | SDK | Last Release | Unreleased Commits | Key Changes | Priority | |-----|-------------|-------------------|-------------|----------| ``` ## Step 4: Release Engines (if needed) Engine release is a three-step process per RELEASE.md: 1. **Bump version** in `Cargo.toml` for affected crates 2. Run `cargo check` to verify compilation and update `Cargo.lock` 3. **Create a PR** with the version bump, merge it 4. **Create and push tags** from main after merge: - `flipt-engine-ffi-v{version}` — triggers CI to build and publish FFI binaries to GitHub release - `flipt-engine-wasm-v{version}` — for bookkeeping (WASM is bundled with its SDKs at SDK release time) - `flipt-engine-wasm-js-v{version}` — for bookkeeping (WASM-JS is bundled with its SDKs at SDK release time) **Only FFI-based SDKs need to wait for engine CI** — the FFI tag triggers builds that publish platform binaries. WASM/WASM-JS engines are built and bundled during SDK release, so their SDKs can be released immediately after tagging. ## Step 5: Release Client SDKs Use the non-interactive CLI script (preferred for automation): ```bash cd release && .venv/bin/python release_cli.py --sdk flipt-client-go --bump patch # dry-run (default) cd release && .venv/bin/python release_cli.py --sdk flipt-client-go --bump patch --publish # real release cd release && .venv/bin/python release_cli.py --sdk flipt-client-js --bump patch --publish --pr ``` If the venv doesn't exist yet: `cd release && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt` Options: - `--sdk NAME`: SDK to release (required) - `--bump patch|minor|major`: Version bump type - `--version X.Y.Z`: Explicit version instead of bump - `--publish`: Actually release (default is dry-run) - `--pr`: Create a PR instead of pushing to main The interactive version (`python release.py`) is also available for manual use. Release order usually doesn't matter between independent SDKs, but FFI-based SDKs must wait for engine artifacts to be published. ### JS + React release order When releasing both `flipt-client-js` and `flipt-client-react`: 1. Release `flipt-client-js` first and wait for the npm publish workflow to succeed. 2. Update `flipt-client-react/package.json` so `peerDependencies["@flipt-io/flipt-client-js"]` points at the newly published JS SDK version. 3. Run `npm install` in `flipt-client-react/` so `package-lock.json` is updated. 4. Commit that React dependency bump. 5. Release `flipt-client-react`. Do not publish JS and React at the same time: React's package metadata must reference the JS version that is already available on npm.
GitHub에서 보기