buildspace-ci-cd について
複数の言語やmacOSパッケージ形式を対象に、GitHub ActionsリポジトリでBuildSpaceによるリリース自動化を設定・デバッグするスキルです。ワークフローの選定に加え、トリガー、入力、シークレット、権限を確認します。
主な機能
- 01プロジェクト種別に応じたリリースワークフローの選定
- 02再利用可能なワークフローや複合アクションの設定
- 03シークレット、入力、権限の確認
- 04ラベルトリガーとドライランの設定
- 05モノレポの依存関係に沿ったリリース順の検証
活用シーン
- 01Rust、Go、TypeScriptプロジェクトのリリース設定
- 02macOSパッケージやdylibのリリース設定
- 03トリガー未実行や設定不足のデバッグ
- 04複数パッケージリポジトリのリリース順序の整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ photon-hq/ skills --skill buildspace-ci-cdインストール後、Claude Code で/buildspace-ci-cdを入力して読み込まれたか確認します。
詳細
BuildSpace リリースワークフローのスキル
このスキルを使うと、再利用可能な GitHub Actions ワークフローを使用するリポジトリで、BuildSpace を利用したリリース自動化を設定またはデバッグできます。
BuildSpace が提供するもの
BuildSpace には 2 つのレイヤーがあります。
- ワークフロー:
.github/workflows/*にある完全なリリースパイプラインです。 - ブロック:カスタムパイプライン向けの、再利用可能なコンポジットアクションです(
.github/blocks/*)。
デフォルトでは、ユーザーが明示的にカスタム動作を必要としていない限り、事前構築済みのワークフローを使用することをおすすめします。
ワークフローの選択
プロジェクトの種類に基づいて、メインとなるワークフローを 1 つだけ選択してください。
| プロジェクトの種類 | ワークフローファイル | トリガー |
|---|---|---|
| Rust バイナリ/ライブラリ | rust-service-release.yaml | PR ラベル release |
| TypeScript/JavaScript の単一パッケージ | typescript-service-release.yaml | PR ラベル release |
| TypeScript モノレポ(複数パッケージ) | typescript-monorepo-release.yaml | PR ラベル release |
| Go バイナリ | go-service-release.yaml | PR ラベル release |
Swift macOS .pkg(コンパイル済みバイナリあり) | swift-release.yml | PR ラベル release |
バイナリなしの macOS .pkg(ペイロード/スクリプトのみ) | pkg-release.yml | PR ラベル release |
macOS .pkg の PR ビルド(ペイロード/スクリプトのみ) | pkg-release-pr.yml | すべての PR コミット |
Swift macOS .pkg の PR ビルドプレビュー | swift-pkg-pr.yml | すべての PR コミット |
| macOS dylib リリース(Xcode ワークスペース) | dylib-release.yml | PR ラベル release |
| macOS dylib リリース(Makefile) | makefile-dylib-release.yml | PR ラベル release |
| 汎用リリース(バージョン更新+GitHub Release のみ) | release.yaml | PR ラベル release |
| PR での README の鮮度チェック | check-readme.yaml | すべての PR |
| PR でのスキルドキュメントの鮮度チェック | check-skills.yaml | すべての PR |
必須の入力、シークレット、権限
YAML を記述する前に、必ず以下を確認してください。
- 入力:サービス/パッケージ名、パス、ビルドコマンド、パッケージリスト、Homebrew tap の情報、Jamf の設定。
- シークレット:
- AI 機能には常に必要です:
OPENAI_API_KEY - npm パブリッシュ:
NPM_TOKEN - crates パブリッシュ:
CARGO_REGISTRY_TOKEN - Swift のコンパイル時環境変数:
SECRET_ENV_VARS - Jamf へのアップロード:
JAMF_CLIENT_ID+JAMF_CLIENT_SECRET - 保護されたブランチへのプッシュまたは Homebrew tap の更新:
APP_ID+APP_PRIVATE_KEY - スキルドキュメントのチェック(プライベートリポジトリ):
SKILLS_REPO_TOKEN - 注:
DEVELOPER_ID_INSTALLER_NAMEは非推奨で無視されます。パッケージは常に署名なしです。
- AI 機能には常に必要です:
- 権限:
- リリース/バージョン更新のジョブには
contents: writeが必要です。 - ラベルのチェックには
pull-requests: readが必要です。 - PR へのコメントには
pull-requests: writeが必要です。
- リリース/バージョン更新のジョブには
リリーストリガーのルール(重要)
BuildSpace はデフォルトでラベルによって制御されます。
- 標準のリリースラベル:
release - 任意のプレリリースラベル:
prerelease - 通常、ラベルがなければリリースジョブは実行されません。
正確に把握しておくべき動作上の違い:
typescript-monorepo-releaseはプレリリースの経路を直接サポートします。typescript-service-release、rust-service-release、go-service-releaseはrelease(または強制入力)に基づいてリリースジョブを実行し、リリースが有効になった後はプレリリースを種別として扱います。swift-release、pkg-release、dylib-release、makefile-dylib-releaseはreleaseのみをチェックします。release.yaml(汎用)はreleaseラベルをチェックし、強制実行用のreleaseブール値入力をサポートします。
実装手順
リポジトリへの BuildSpace のセットアップを依頼された場合:
- リポジトリの種類を判定します(Rust、TS 単体、TS モノレポ、Go、Swift、macOS pkg、dylib)。
- 公開先を確認します(GitHub のみ、npm、crates、Jamf、Homebrew tap)。
- ユーザーのリポジトリに呼び出し元ワークフロー(
.github/workflows/release.yamlまたはci.yaml)を作成し、uses: photon-hq/buildspace/...@v1を指定します。 - そのワークフローに合わせて、
with:の入力とsecrets:を正確に設定します。 - 推奨される権限ブロックを追加します。
- ユーザーがすぐに公開するよう求めていない場合は、最初の検証実行に
dry-run: trueを追加します。 - 実行方法(
releaseラベルとマージの組み合わせ、またはrelease: trueの強制指定)を説明します。 - モノレポの場合は、
packagesの JSON と依存関係の順序の動作を検証します。 - Homebrew tap を更新する場合は、
tap-repoとtap-formulaの入力、およびAPP_ID/APP_PRIVATE_KEYシークレットを設定します。 - Jamf にアップロードする場合は、
jamf-urlと Jamf のシークレットを設定します。
ワークフローリファレンス
rust-service-release.yaml
Rust サービス向けの完全なリリースパイプラインです。ラベルの確認、AI によるバージョンとリリースノートの生成、クロスビルド(Linux x64、macOS ARM64、Windows x64)、ワークスペース内の crate バージョンの同期、crates.io への crate の公開、バイナリを含む GitHub Release の作成、オプションでの Homebrew tap の更新を行います。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
service-name | string | はい | — | サービスの表示名 |
binary-name | string | はい | — | Cargo.toml に記載されたバイナリ名 |
binary-path | string | いいえ | "" | crate ディレクトリへのパス(例:crates/client) |
crates | string | いいえ | [] | 依存関係の順序で公開する crate パスの JSON 配列 |
build-env | string | いいえ | "" | コンパイル時の環境変数(例:BASE_URL=https://...) |
labels-to-check | string | いいえ | ["release", "prerelease"] | リリースを開始する PR ラベル |
prerelease | boolean | いいえ | false | プレリリースを強制します(-rc.N 接尾辞を追加) |
release | boolean | いいえ | false | リリースを強制します(ラベル確認を省略) |
dry-run | boolean | いいえ | false | 実際には公開せずにテストします |
tap-repo | string | いいえ | "" | Homebrew tap リポジトリ(例:photon-hq/homebrew-photon)。空の場合はスキップします。 |
tap-formula | string | いいえ | "" | tap 内の Formula 名(例:jamf-package-updater)。tap-repo が設定されている場合は必須です。 |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョンとリリースノートの生成に使用します |
CARGO_REGISTRY_TOKEN | いいえ | crates.io API トークン(公開に必要) |
APP_ID | いいえ | GitHub App ID(保護されたブランチと Homebrew tap の更新に使用) |
APP_PRIVATE_KEY | いいえ | GitHub App の秘密鍵 |
typescript-service-release.yaml
単一の TypeScript/JavaScript パッケージ向けの完全なリリースパイプラインです。ラベルの確認、AI によるバージョンとリリースノートの生成、package.json のバージョン更新、GitHub Release の作成、npm への公開を行います。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
service-name | string | はい | — | サービスの表示名 |
bun-version | string | いいえ | latest | 使用する Bun のバージョン |
npm-tag | string | いいえ | latest | npm の dist-tag(例:latest、beta、next) |
no-npm-publish | boolean | いいえ | false | npm への公開をスキップします(GitHub Release のみ) |
working-directory | string | いいえ | . | package.json を含むディレクトリ |
build-command | string | いいえ | bun run build | 実行するビルドコマンド |
labels-to-check | string | いいえ | ["release", "prerelease"] | リリースを開始する PR ラベル |
prerelease | boolean | いいえ | false | プレリリースを強制します |
release | boolean | いいえ | false | リリースを強制します(ラベル確認を省略) |
dry-run | boolean | いいえ | false | 実際には公開せずにテストします |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョンとリリースノートの生成に使用します |
NPM_TOKEN | いいえ | npm 認証トークン(公開に必要) |
typescript-monorepo-release.yaml
独立してバージョン管理される TypeScript モノレポ向けの完全なリリースパイプラインです。変更されたパッケージを検出し、依存関係の順序に従ってトポロジカルソートを行い、すべてのバージョンとリリースノートを1回の AI 呼び出しで生成し、各 package.json のバージョンを更新して、release/YYYY-MM-DD.N タグで GitHub Release を作成し、順番に npm へ公開します。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
service-name | string | はい | — | モノレポの表示名 |
packages | string | はい | — | JSON 配列:[{"name":"pkg","path":"packages/pkg"}] |
bun-version | string | いいえ | latest | 使用する Bun のバージョン |
npm-tag | string | いいえ | latest | npm の dist-tag |
build-command | string | いいえ | bun run build | パッケージごとのビルドコマンド(root-build-command が設定されている場合は無視されます) |
root-build-command | string | いいえ | "" | リポジトリのルートで一度だけビルドします(例:turbo build) |
include-dependents | boolean | いいえ | false | 下流の依存パッケージもリリースします |
labels-to-check | string | いいえ | ["release", "prerelease"] | リリースをトリガーする PR ラベル |
prerelease | boolean | いいえ | false | プレリリースを強制します |
release | boolean | いいえ | false | リリースを強制します |
dry-run | boolean | いいえ | false | 実際には公開せずにテストします |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョン管理とリリースノート生成に使用します |
NPM_TOKEN | はい | npm 認証トークン |
APP_ID | いいえ | GitHub App ID(保護されたブランチへのプッシュ用) |
APP_PRIVATE_KEY | いいえ | GitHub App の秘密鍵 |
go-service-release.yaml
Go バイナリ向けの完全なリリースパイプラインです。ラベルを確認し、AI でバージョンとリリースノートを生成し、macOS(ARM64)および Linux(AMD64)向けにクロスコンパイルして、バイナリを含む GitHub Release を作成し、必要に応じて Homebrew tap を更新します。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
service-name | string | はい | — | サービスの表示名 |
binary-name | string | はい | — | 出力バイナリ名 |
go-version | string | いいえ | stable | 使用する Go のバージョン |
build-flags | string | いいえ | "" | 追加の go build フラグ |
ldflags | string | いいえ | -s -w | リンカーフラグ |
labels-to-check | string | いいえ | ["release", "prerelease"] | リリースをトリガーする PR ラベル |
prerelease | boolean | いいえ | false | プレリリースを強制します |
release | boolean | いいえ | false | リリースを強制します |
tap-repo | string | いいえ | "" | Homebrew tap リポジトリ。空の場合はスキップします。 |
tap-formula | string | いいえ | "" | tap 内の Formula 名。tap-repo が設定されている場合は必須です。 |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョン管理とリリースノート生成に使用します |
APP_ID | いいえ | GitHub App ID(Homebrew tap の更新用) |
APP_PRIVATE_KEY | いいえ | GitHub App の秘密鍵 |
swift-release.yml
コンパイル済み Swift バイナリを含む macOS .pkg 配布向けの完全なリリースパイプラインです。ラベルのチェック、AI によるバージョンとリリースノートの生成、Swift のビルド、.pkg の作成(署名なし)、GitHub Release、Jamf への任意のアップロードを行います。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
package-name | string | はい | — | Swift バイナリ/パッケージの名前 |
identifier | string | はい | — | パッケージ識別子(例:com.example.mytool) |
scripts-path | string | いいえ | "" | preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス |
payload-path | string | いいえ | "" | 追加のペイロードディレクトリのパス(インストールルートを反映) |
jamf-url | string | いいえ | "" | Jamf Pro インスタンスの URL(スキップする場合は空のままにします) |
jamf-package-priority | string | いいえ | "" | Jamf Pro でのパッケージの優先度 |
jamf-package-name | string | いいえ | "" | Jamf Pro で照合するパッケージ名 |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョン管理とリリースノート生成に使用します |
SECRET_ENV_VARS | いいえ | コンパイル時の環境変数。.env に書き込まれます |
JAMF_CLIENT_ID | いいえ | Jamf Pro API クライアント ID |
JAMF_CLIENT_SECRET | いいえ | Jamf Pro API クライアントシークレット |
pkg-release.yml
コンパイル済みバイナリを含まない macOS .pkg のリリースパイプラインです。ペイロードファイルとスクリプトを .pkg にパッケージ化し、GitHub Release を作成して、Jamf へのアップロードも任意で行います。設定ファイル、LaunchDaemon、スクリプト、その他の非バイナリのペイロードのみを配布するパッケージでは、swift-release の代わりに使用してください。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
package-name | string | はい | — | パッケージの名前 |
identifier | string | はい | — | パッケージ識別子(例:com.example.my-config) |
scripts-path | string | いいえ | "" | preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス |
payload-path | string | いいえ | "" | ペイロードディレクトリのパス(インストールルートを反映) |
jamf-url | string | いいえ | "" | Jamf Pro インスタンスの URL(スキップする場合は空のままにします) |
jamf-package-priority | string | いいえ | "" | Jamf Pro でのパッケージの優先度 |
jamf-package-name | string | いいえ | "" | Jamf Pro で照合するパッケージ名 |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョン管理とリリースノート生成に使用します |
JAMF_CLIENT_ID | いいえ | Jamf Pro API クライアント ID |
JAMF_CLIENT_SECRET | いいえ | Jamf Pro API クライアントシークレット |
pkg-release-pr.yml
PR のコミットごとに macOS .pkg(コンパイル済みバイナリなし)をビルドし、PR に継続的に更新されるコメントとしてステータスを報告します。ペイロード/スクリプトのみのパッケージ向けで、swift-pkg-pr と同じ操作感です。実行中の古いビルドは、新しいコミットがあると自動的にキャンセルされます。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
package-name | string | はい | — | パッケージの名前 |
identifier | string | はい | — | パッケージ識別子(例:com.example.my-config) |
scripts-path | string | いいえ | "" | preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス |
payload-path | string | いいえ | "" | ペイロードディレクトリのパス(インストールルートを反映) |
swift-pkg-pr.yml
PR のコミットごとに macOS .pkg(Swift バイナリを含む)をビルドし、ビルドステータスを含む単一の PR コメントを投稿/更新して、アーティファクトをアップロードします(保持期間は 7 日間)。実行中の古いビルドは、新しいコミットがあると自動的にキャンセルされます。
入力:
| 入力 | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
package-name | string | はい | — | Swift バイナリ/パッケージの名前 |
identifier | string | はい | — | パッケージ識別子(例:com.example.mytool) |
scripts-path | string | いいえ | "" | preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
SECRET_ENV_VARS | いいえ | コンパイル時の環境変数。.env に書き込まれます |
dylib-release.yml
CocoaPods を使用して Xcode ワークスペースからビルドする macOS ダイナミックライブラリのリリースパイプラインです。ラベルの確認、AI によるバージョンとリリースノートの作成、CocoaPods のインストール、dylib(arm64e)のビルド、.dylib アーティファクトを含む GitHub Release の作成を行います。
入力:
| 入力 | 種類 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
workspace | string | はい | — | .xcworkspace へのパス |
scheme | string | はい | — | ビルドする Xcode スキーム |
dylib-name | string | はい | — | 出力する dylib の名前(例:BlueBubblesHelper) |
project-directory | string | はい | — | Podfile を含むディレクトリ |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョン管理とリリースノート作成に使用します |
makefile-dylib-release.yml
Makefile からビルドする macOS ダイナミックライブラリのリリースパイプラインです。ラベルの確認、AI によるバージョンとリリースノートの作成、make release の実行、.dylib アーティファクトを含む GitHub Release の作成を行います。
入力:
| 入力 | 種類 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
dylib-name | string | はい | — | 出力する dylib の名前(例:imessage-helper) |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョン管理とリリースノート作成に使用します |
release.yaml
AI によるバージョン管理と GitHub Release の作成だけが必要なプロジェクト向けの汎用リリースパイプラインです(ビルド工程やパッケージ公開はありません)。設定リポジトリ、ドキュメントリポジトリ、またはタグ付きリリースだけが必要なプロジェクトに便利です。
入力:
| 入力 | 種類 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
service-name | string | はい | — | サービスの表示名 |
labels-to-check | string | いいえ | ["release"] | 確認する PR ラベルの JSON 配列 |
release | boolean | いいえ | false | 強制的にリリースします(ラベルより優先されます) |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるバージョン管理とリリースノート作成に使用します |
check-readme.yaml
すべての PR で実行され、変更内容に対して README.md が最新かどうかを確認します。AI を使用して、変更されたファイルと README を照合して分析します。PR コメントを自動的に投稿または削除します。
入力:
| 入力 | 種類 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
blocking | boolean | いいえ | false | true の場合、README が古いときにワークフローを失敗させます。false の場合、警告コメントのみを投稿します。 |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI による README の分析に使用します |
check-skills.yaml
すべての PR で実行され、スキルのドキュメント(別のスキルリポジトリ内)が変更内容に対して最新かどうかを確認します。AI を使用して、変更されたファイルとスキルの SKILL.md ファイルを照合して分析します。PR コメントを自動的に投稿または削除します。
入力:
| 入力 | 種類 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
fail_on_missing_skills | boolean | いいえ | false | true の場合、スキルのドキュメントが古いときにワークフローを失敗させます。false の場合、警告コメントのみを投稿します。 |
skills-repo | string | いいえ | photon-hq/skills | 照合するスキルリポジトリ(owner/repo 形式) |
シークレット:
| シークレット | 必須 | 説明 |
|---|---|---|
OPENAI_API_KEY | はい | AI によるスキルの分析に使用します |
SKILLS_REPO_TOKEN | いいえ | スキルリポジトリ用の GitHub トークン(デフォルトでは GITHUB_TOKEN を使用します。プライベートリポジトリには PAT を使用してください) |
モノレポ固有のガイダンス
typescript-monorepo-release の場合:
packages入力は JSON 配列である必要があります:[{"name":"pkg","path":"packages/pkg"}]- 変更されたパッケージは、最後のリリースタグとの差分から検出されます。
- ローカルの依存関係の辺を使用して、パッケージをトポロジカル順に並べます。
- 任意の
include-dependents: trueを指定すると、依存先のパッケージもリリースに含まれます。 root-build-commandは、パッケージごとのbuild-commandより優先されます。- プレリリースが有効な場合、npm のプレリリースタグは自動的に
betaになります。 - 単一のバージョンがないため、日付ベースの
release/YYYY-MM-DD.Nタグを使用します。
Rust/Go に関するメモ
- Rust ワークフローでは、次のことができます。
- Linux x64、macOS ARM64、Windows x64 向けにクロスビルドする
- すべてのクレート間でワークスペースのバージョンを同期する
- 指定された順序でクレートを公開する
- オプションで Homebrew tap を更新する(
tap-repo+tap-formula。APP_ID+APP_PRIVATE_KEYが必要)
- Go ワークフローでは、次のことができます。
- macOS ARM64 および Linux AMD64 向けにクロスビルドする
- Homebrew tap も更新する(
tap-repo+tap-formula。APP_ID+APP_PRIVATE_KEYが必要)
Swift/macOS .pkg に関するメモ
swift-releaseは Swift バイナリをビルドし、署名なしの.pkgを作成し、GitHub Release を作成します。また、オプションで Jamf にアップロードします。pkg-releaseは、コンパイル済みバイナリを含まず、ペイロードファイルやスクリプトのみを含む.pkgパッケージ向けです。swift-pkg-prとpkg-release-prは、PR プレビュー用の対応ワークフローです(コミットごとにビルドし、PR にコメントします)。- パッケージは常に署名なしです(
DEVELOPER_ID_INSTALLER_NAMEは非推奨であり、無視されます)。 - コンパイル時の環境変数は
SECRET_ENV_VARSシークレット経由で渡されます(.envに書き込まれます)。 - Jamf へのアップロードはオプションです。
jamf-url入力を設定し、JAMF_CLIENT_ID+JAMF_CLIENT_SECRETシークレットを指定してください。
Dylib に関するメモ
dylib-release.ymlは CocoaPods を使用する Xcode ワークスペースのプロジェクト向けです。arm64e dylib をビルドします。makefile-dylib-release.ymlは Makefile を使用するプロジェクト向けです。make releaseを実行し、バージョンを埋め込みます。- どちらも
.dylibをアーティファクトとして GitHub Release を作成します。
README チェックのガイダンス
PR のドキュメントの差異を検出するには、check-readme.yaml を使用します。
blocking: false(デフォルト):警告コメントのみを投稿します。blocking: true:README が古いと判断された場合、ジョブを失敗させます。- コメントの投稿には
OPENAI_API_KEYと PR への書き込み権限が必要です。
Skills チェックのガイダンス
Skills ドキュメントの差異を検出するには、check-skills.yaml を使用します。
fail_on_missing_skills: false(デフォルト):警告コメントのみを投稿します。fail_on_missing_skills: true:Skills が古いと判断された場合、ジョブを失敗させます。- コメントの投稿には
OPENAI_API_KEYと PR への書き込み権限が必要です。 - プライベートな Skills リポジトリの場合は、
SKILLS_REPO_TOKEN(リポジトリへのアクセス権を持つ PAT)を指定してください。
Blocks リファレンス
すべてのブロックは .github/blocks/ の下にあります。ワークフローはこれらを内部で組み合わせます。カスタムパイプラインの場合にのみ、直接使用してください。
バージョンとリリース情報
| Block | Path | Purpose |
|---|---|---|
determine-publish-version | .github/blocks/determine-publish-version/action.yaml | AI を活用した次のセマンティックバージョン(単体で使用。リリースノートなし) |
generate-release-info | .github/blocks/generate-release-info/action.yaml | AI を活用してバージョンとリリースノートを一度に生成 |
create-github-release | .github/blocks/create-github-release/action.yaml | オプションでアーティファクトを添付して GitHub Release を作成 |
ラベルと PR の操作
| Block | Path | Purpose |
|---|---|---|
check-pr-label | .github/blocks/check-pr-label/action.yaml | PR のラベルを確認し、リリースを開始するかどうかを判断 |
comment-on-pr | .github/blocks/comment-on-pr/action.yaml | 単一の PR コメントを投稿または更新(comment-key による冪等性を確保) |
check-readme | .github/blocks/check-readme/action.yaml | AI を活用した README の最新状態チェック |
check-skills | .github/blocks/check-skills/action.yaml | AI を活用した Skills ドキュメントの最新状態チェック |
ビルドブロック
| ブロック | パス | 目的 |
|---|---|---|
rust-build | .github/blocks/rust-build/action.yaml | ターゲットトリプル向けの Rust バイナリをビルドします |
go-build | .github/blocks/go-build/action.yaml | ターゲット OS/アーキテクチャ向けの Go バイナリをビルドします |
typescript-build | .github/blocks/typescript-build/action.yaml | Bun を使用して TypeScript プロジェクトをビルドします |
swift-build | .github/blocks/swift-build/action.yml | Swift バイナリをビルドします(SPM、.env の注入に対応) |
swift-pkg | .github/blocks/swift-pkg/action.yml | バイナリやペイロード/スクリプトから macOS .pkg を作成します |
build-dylib | .github/blocks/build-dylib/action.yml | Xcode ワークスペースから macOS dylib をビルドします(arm64e) |
build-makefile-dylib | .github/blocks/build-makefile-dylib/action.yml | Makefile から macOS dylib をビルドします |
install-cocoapods | .github/blocks/install-cocoapods/action.yml | CocoaPods の依存関係をキャッシュしてインストールします |
公開ブロック
| ブロック | パス | 目的 |
|---|---|---|
publish-npm | .github/blocks/publish-npm/action.yaml | 単一パッケージを npm に公開します |
publish-npm-packages | .github/blocks/publish-npm-packages/action.yaml | モノレポの複数パッケージを依存関係の順に npm に公開します |
publish-crates | .github/blocks/publish-crates/action.yaml | ワークスペースのクレートを順に crates.io に公開します |
bump-npm-version | .github/blocks/bump-npm-version/action.yaml | package.json のバージョンを更新してプッシュします |
bump-monorepo-versions | .github/blocks/bump-monorepo-versions/action.yaml | 変更されたモノレポの全パッケージのバージョンを AI で更新します |
sync-crates-version | .github/blocks/sync-crates-version/action.yaml | すべての Rust ワークスペースクレートで単一のバージョンを設定します |
update-tap | .github/blocks/update-tap/action.yaml | Homebrew tap のフォーミュラを更新します(npm/Go/ビルド済みバイナリの SHA256 を自動計算します) |
detect-changed-packages | .github/blocks/detect-changed-packages/action.yaml | 変更されたモノレポのパッケージを検出し、トポロジカル順で返します |
トラブルシューティングのチェックリスト
リリースが実行されなかった場合:
- マージ前に PR に想定されたラベルが付いていたことを確認します。
- ワークフローの権限に必要なスコープが含まれていることを確認します。
- シークレットがリポジトリレベルで設定されていることを確認します。
- 呼び出し元のワークフローが正しい再利用可能なワークフローのパスを指定していることを確認します。
- モノレポの場合は、
packagesの JSON が有効で、パスが存在することを確認します。 - 公開に失敗した場合は、
dry-run: trueでテストし、認証トークンのスコープを確認します。 - Homebrew tap の更新では、
APP_IDとAPP_PRIVATE_KEYのシークレットが設定され、GitHub App に tap リポジトリへのプッシュ権限があることを確認します。 - Jamf へのアップロードでは、
JAMF_CLIENT_IDとJAMF_CLIENT_SECRETが設定され、jamf-urlが有効な Jamf Pro の URL であることを確認します。 - dylib のビルドでは、Xcode ワークスペース/スキームまたは Makefile が存在し、想定どおりの出力を生成することを確認します。
エージェントの応答形式
BuildSpace のセットアップ手順を生成する場合は、次の内容を回答してください。
- 選択したワークフローとその理由。
- 呼び出し元のワークフロー用のコピーしてすぐに使える YAML。
- 追加するシークレット(必要なものを正確に列挙し、取得先も記載)。
- 実行方法と確認方法。
- 初回実行時の安全モード(
dry-run)の推奨。
推奨内容は具体的にし、最小限の動作するセットアップをデフォルトとしてください。