Skip to main content

add-signer-ci

Prepare CI workflows for a new signer backend contributed via a fork PR. Use when asked to "add a signer to CI", "wire up CI for a new signer", "prepare the fork external live tests", or when a new signing backend needs its workflow matrices, env vars, and publish entries added.

Zur Installation springen

Quellinformationen

Repository
solana-foundation/solana-keychain
Letzte Quellaktivität
24. August 2026 um 15:48
Erkannte Sprache von SKILL.md
Englisch
Sterne
69
Forks
41

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
add-signer-ci
description
Prepare CI workflows for a new signer backend contributed via a fork PR. Use when asked to "add a signer to CI", "wire up CI for a new signer", "prepare the fork external live tests", or when a new signing backend needs its workflow matrices, env vars, and publish entries added.
allowed-tools
Read, Edit, Glob, Grep
# Add Fork Signer to CI Prepare CI workflows for a new signer being added via a fork PR. This is a two-phase process because fork PRs can't use repository secrets, so `fork-external-live-manual.yml` (which runs from `main`'s YAML) must be updated on `main` first. If any of these are unknown, ask the user for: signer display name, Rust feature name, Rust integration test function name, TypeScript package name (if any), and required environment variable names. ## Phase 1 — Our Preparatory PR (merged to `main`) This is what YOU do. Read each file first, then make edits matching existing patterns exactly. ### 1. `.github/workflows/fork-external-live-manual.yml` **a) Rust test step env vars** (`Run Rust external live integration tests` → env block): Add the signer's env vars after the last existing signer's env vars, before `SOLANA_RPC_URL`. **b) Rust test step tests array** (same step → `tests=()` bash array): Add the Rust integration test function name to the array. **c) TypeScript test step env vars** (`Run TypeScript external live integration tests` → env block): Add the signer's env vars (if the signer has a TypeScript package). **d) TypeScript test step packages array** (same step → `packages=()` bash array): Add the TypeScript package name (if applicable). ### 2. `.github/workflows/ci.yml` — env vars ONLY **Integration test env vars** (`rust-integration-test` job → env block): Add the signer's env vars after the last existing signer's env vars, before `SOLANA_RPC_URL`. **DO NOT** add to the `backend` matrix or `test` matrix. The Rust feature and test don't exist on `main` yet — adding them would break CI. Those go in Phase 2. ## Phase 2 — Fork Contributor Adds to Their PR Tell the fork contributor (in a PR comment or issue) to add these to their branch alongside the signer code: ### 1. `.github/workflows/ci.yml` **a) Unit test backend matrix** (`rust-test` job → `strategy.matrix.backend`): Add the Rust feature name to the backend array, before `all`. **b) Integration test matrix** (`rust-integration-test` job → `strategy.matrix.test`): Add the integration test function name to the test array. ### 2. `.github/workflows/typescript-ci.yml` (if TS package exists) **a) Unit test matrix** (`typescript-test-unit` job → `strategy.matrix.package`): Add the TypeScript package name. **b) Integration test matrix** (`typescript-test-integration` job → `strategy.matrix.package`): Add the TypeScript package name. **c) Integration test env vars** (integration test step → env block): Add a comment header and the signer's env vars. ### 3. `.github/workflows/typescript-publish.yml` (if TS package exists) **a) `PUBLISH_PACKAGES` env list**: Add the package name in dependency order (before `keychain` umbrella). **b) GitHub Release `packages` array** (in the `actions/github-script` step): Add `@solana/keychain-<name>` to the array. **c) Publish summary table**: Add a row for the new package. ## Merge Order 1. Merge Phase 1 PR → `main` is ready with secrets wired up 2. Trigger `Fork External Live Tests` workflow with the fork PR number → integration tests run with secrets 3. Merge the fork PR (Phase 2 changes included alongside the code) ## GitHub Secrets Reminder After updating CI files, the following secrets must be configured: - **Repository level** (Settings → Secrets → Actions): for `ci.yml` workflows - **`external-live-tests` environment** (Settings → Environments → external-live-tests → Secrets): for `fork-external-live-manual.yml` Both locations need the same secret names configured. ## Verification After making Phase 1 changes: 1. Confirm `fork-external-live-manual.yml` has the new env vars and test entries (Rust and TS if applicable) 2. Confirm `ci.yml` has the new env vars but NOT the matrix additions 3. Confirm CI passes (no references to nonexistent features)
Auf GitHub ansehen