mcpField
B
buildspace-ci-cd

buildspace-ci-cd

github.com/photon-hqクラウド・DevOps1586 回インストール12 週間前に更新
リポジトリ

buildspace-ci-cd について

複数の言語やmacOSパッケージ形式を対象に、GitHub ActionsリポジトリでBuildSpaceによるリリース自動化を設定・デバッグするスキルです。ワークフローの選定に加え、トリガー、入力、シークレット、権限を確認します。

主な機能

  1. 01プロジェクト種別に応じたリリースワークフローの選定
  2. 02再利用可能なワークフローや複合アクションの設定
  3. 03シークレット、入力、権限の確認
  4. 04ラベルトリガーとドライランの設定
  5. 05モノレポの依存関係に沿ったリリース順の検証

活用シーン

  1. 01Rust、Go、TypeScriptプロジェクトのリリース設定
  2. 02macOSパッケージやdylibのリリース設定
  3. 03トリガー未実行や設定不足のデバッグ
  4. 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.yamlPR ラベル release
TypeScript/JavaScript の単一パッケージtypescript-service-release.yamlPR ラベル release
TypeScript モノレポ(複数パッケージ)typescript-monorepo-release.yamlPR ラベル release
Go バイナリgo-service-release.yamlPR ラベル release
Swift macOS .pkg(コンパイル済みバイナリあり)swift-release.ymlPR ラベル release
バイナリなしの macOS .pkg(ペイロード/スクリプトのみ)pkg-release.ymlPR ラベル release
macOS .pkg の PR ビルド(ペイロード/スクリプトのみ)pkg-release-pr.ymlすべての PR コミット
Swift macOS .pkg の PR ビルドプレビューswift-pkg-pr.ymlすべての PR コミット
macOS dylib リリース(Xcode ワークスペース)dylib-release.ymlPR ラベル release
macOS dylib リリース(Makefile)makefile-dylib-release.ymlPR ラベル release
汎用リリース(バージョン更新+GitHub Release のみ)release.yamlPR ラベル release
PR での README の鮮度チェックcheck-readme.yamlすべての PR
PR でのスキルドキュメントの鮮度チェックcheck-skills.yamlすべての PR

必須の入力、シークレット、権限

YAML を記述する前に、必ず以下を確認してください。

  1. 入力:サービス/パッケージ名、パス、ビルドコマンド、パッケージリスト、Homebrew tap の情報、Jamf の設定。
  2. シークレット:
    • 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 は非推奨で無視されます。パッケージは常に署名なしです。
  3. 権限:
    • リリース/バージョン更新のジョブには 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 のセットアップを依頼された場合:

  1. リポジトリの種類を判定します(Rust、TS 単体、TS モノレポ、Go、Swift、macOS pkg、dylib)。
  2. 公開先を確認します(GitHub のみ、npm、crates、Jamf、Homebrew tap)。
  3. ユーザーのリポジトリに呼び出し元ワークフロー(.github/workflows/release.yaml または ci.yaml)を作成し、uses: photon-hq/buildspace/...@v1 を指定します。
  4. そのワークフローに合わせて、with: の入力と secrets: を正確に設定します。
  5. 推奨される権限ブロックを追加します。
  6. ユーザーがすぐに公開するよう求めていない場合は、最初の検証実行に dry-run: true を追加します。
  7. 実行方法(release ラベルとマージの組み合わせ、または release: true の強制指定)を説明します。
  8. モノレポの場合は、packages の JSON と依存関係の順序の動作を検証します。
  9. Homebrew tap を更新する場合は、tap-repo と tap-formula の入力、および APP_ID/APP_PRIVATE_KEY シークレットを設定します。
  10. 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-namestringはい—サービスの表示名
binary-namestringはい—Cargo.toml に記載されたバイナリ名
binary-pathstringいいえ""crate ディレクトリへのパス(例:crates/client)
cratesstringいいえ[]依存関係の順序で公開する crate パスの JSON 配列
build-envstringいいえ""コンパイル時の環境変数(例:BASE_URL=https://...)
labels-to-checkstringいいえ["release", "prerelease"]リリースを開始する PR ラベル
prereleasebooleanいいえfalseプレリリースを強制します(-rc.N 接尾辞を追加)
releasebooleanいいえfalseリリースを強制します(ラベル確認を省略)
dry-runbooleanいいえfalse実際には公開せずにテストします
tap-repostringいいえ""Homebrew tap リポジトリ(例:photon-hq/homebrew-photon)。空の場合はスキップします。
tap-formulastringいいえ""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-namestringはい—サービスの表示名
bun-versionstringいいえlatest使用する Bun のバージョン
npm-tagstringいいえlatestnpm の dist-tag(例:latest、beta、next)
no-npm-publishbooleanいいえfalsenpm への公開をスキップします(GitHub Release のみ)
working-directorystringいいえ.package.json を含むディレクトリ
build-commandstringいいえbun run build実行するビルドコマンド
labels-to-checkstringいいえ["release", "prerelease"]リリースを開始する PR ラベル
prereleasebooleanいいえfalseプレリリースを強制します
releasebooleanいいえfalseリリースを強制します(ラベル確認を省略)
dry-runbooleanいいえ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-namestringはい—モノレポの表示名
packagesstringはい—JSON 配列:[{"name":"pkg","path":"packages/pkg"}]
bun-versionstringいいえlatest使用する Bun のバージョン
npm-tagstringいいえlatestnpm の dist-tag
build-commandstringいいえbun run buildパッケージごとのビルドコマンド(root-build-command が設定されている場合は無視されます)
root-build-commandstringいいえ""リポジトリのルートで一度だけビルドします(例:turbo build)
include-dependentsbooleanいいえfalse下流の依存パッケージもリリースします
labels-to-checkstringいいえ["release", "prerelease"]リリースをトリガーする PR ラベル
prereleasebooleanいいえfalseプレリリースを強制します
releasebooleanいいえfalseリリースを強制します
dry-runbooleanいいえ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-namestringはい—サービスの表示名
binary-namestringはい—出力バイナリ名
go-versionstringいいえstable使用する Go のバージョン
build-flagsstringいいえ""追加の go build フラグ
ldflagsstringいいえ-s -wリンカーフラグ
labels-to-checkstringいいえ["release", "prerelease"]リリースをトリガーする PR ラベル
prereleasebooleanいいえfalseプレリリースを強制します
releasebooleanいいえfalseリリースを強制します
tap-repostringいいえ""Homebrew tap リポジトリ。空の場合はスキップします。
tap-formulastringいいえ""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-namestringはい—Swift バイナリ/パッケージの名前
identifierstringはい—パッケージ識別子(例:com.example.mytool)
scripts-pathstringいいえ""preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス
payload-pathstringいいえ""追加のペイロードディレクトリのパス(インストールルートを反映)
jamf-urlstringいいえ""Jamf Pro インスタンスの URL(スキップする場合は空のままにします)
jamf-package-prioritystringいいえ""Jamf Pro でのパッケージの優先度
jamf-package-namestringいいえ""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-namestringはい—パッケージの名前
identifierstringはい—パッケージ識別子(例:com.example.my-config)
scripts-pathstringいいえ""preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス
payload-pathstringいいえ""ペイロードディレクトリのパス(インストールルートを反映)
jamf-urlstringいいえ""Jamf Pro インスタンスの URL(スキップする場合は空のままにします)
jamf-package-prioritystringいいえ""Jamf Pro でのパッケージの優先度
jamf-package-namestringいいえ""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-namestringはい—パッケージの名前
identifierstringはい—パッケージ識別子(例:com.example.my-config)
scripts-pathstringいいえ""preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス
payload-pathstringいいえ""ペイロードディレクトリのパス(インストールルートを反映)
swift-pkg-pr.yml

PR のコミットごとに macOS .pkg(Swift バイナリを含む)をビルドし、ビルドステータスを含む単一の PR コメントを投稿/更新して、アーティファクトをアップロードします(保持期間は 7 日間)。実行中の古いビルドは、新しいコミットがあると自動的にキャンセルされます。

入力:

入力型必須デフォルト説明
package-namestringはい—Swift バイナリ/パッケージの名前
identifierstringはい—パッケージ識別子(例:com.example.mytool)
scripts-pathstringいいえ""preinstall/postinstall スクリプトを含むスクリプトディレクトリのパス

シークレット:

シークレット必須説明
SECRET_ENV_VARSいいえコンパイル時の環境変数。.env に書き込まれます
dylib-release.yml

CocoaPods を使用して Xcode ワークスペースからビルドする macOS ダイナミックライブラリのリリースパイプラインです。ラベルの確認、AI によるバージョンとリリースノートの作成、CocoaPods のインストール、dylib(arm64e)のビルド、.dylib アーティファクトを含む GitHub Release の作成を行います。

入力:

入力種類必須デフォルト説明
workspacestringはい—.xcworkspace へのパス
schemestringはい—ビルドする Xcode スキーム
dylib-namestringはい—出力する dylib の名前(例:BlueBubblesHelper)
project-directorystringはい—Podfile を含むディレクトリ

シークレット:

シークレット必須説明
OPENAI_API_KEYはいAI によるバージョン管理とリリースノート作成に使用します
makefile-dylib-release.yml

Makefile からビルドする macOS ダイナミックライブラリのリリースパイプラインです。ラベルの確認、AI によるバージョンとリリースノートの作成、make release の実行、.dylib アーティファクトを含む GitHub Release の作成を行います。

入力:

入力種類必須デフォルト説明
dylib-namestringはい—出力する dylib の名前(例:imessage-helper)

シークレット:

シークレット必須説明
OPENAI_API_KEYはいAI によるバージョン管理とリリースノート作成に使用します
release.yaml

AI によるバージョン管理と GitHub Release の作成だけが必要なプロジェクト向けの汎用リリースパイプラインです(ビルド工程やパッケージ公開はありません)。設定リポジトリ、ドキュメントリポジトリ、またはタグ付きリリースだけが必要なプロジェクトに便利です。

入力:

入力種類必須デフォルト説明
service-namestringはい—サービスの表示名
labels-to-checkstringいいえ["release"]確認する PR ラベルの JSON 配列
releasebooleanいいえfalse強制的にリリースします(ラベルより優先されます)

シークレット:

シークレット必須説明
OPENAI_API_KEYはいAI によるバージョン管理とリリースノート作成に使用します
check-readme.yaml

すべての PR で実行され、変更内容に対して README.md が最新かどうかを確認します。AI を使用して、変更されたファイルと README を照合して分析します。PR コメントを自動的に投稿または削除します。

入力:

入力種類必須デフォルト説明
blockingbooleanいいえfalsetrue の場合、README が古いときにワークフローを失敗させます。false の場合、警告コメントのみを投稿します。

シークレット:

シークレット必須説明
OPENAI_API_KEYはいAI による README の分析に使用します
check-skills.yaml

すべての PR で実行され、スキルのドキュメント(別のスキルリポジトリ内)が変更内容に対して最新かどうかを確認します。AI を使用して、変更されたファイルとスキルの SKILL.md ファイルを照合して分析します。PR コメントを自動的に投稿または削除します。

入力:

入力種類必須デフォルト説明
fail_on_missing_skillsbooleanいいえfalsetrue の場合、スキルのドキュメントが古いときにワークフローを失敗させます。false の場合、警告コメントのみを投稿します。
skills-repostringいいえ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/ の下にあります。ワークフローはこれらを内部で組み合わせます。カスタムパイプラインの場合にのみ、直接使用してください。

バージョンとリリース情報
BlockPathPurpose
determine-publish-version.github/blocks/determine-publish-version/action.yamlAI を活用した次のセマンティックバージョン(単体で使用。リリースノートなし)
generate-release-info.github/blocks/generate-release-info/action.yamlAI を活用してバージョンとリリースノートを一度に生成
create-github-release.github/blocks/create-github-release/action.yamlオプションでアーティファクトを添付して GitHub Release を作成
ラベルと PR の操作
BlockPathPurpose
check-pr-label.github/blocks/check-pr-label/action.yamlPR のラベルを確認し、リリースを開始するかどうかを判断
comment-on-pr.github/blocks/comment-on-pr/action.yaml単一の PR コメントを投稿または更新(comment-key による冪等性を確保)
check-readme.github/blocks/check-readme/action.yamlAI を活用した README の最新状態チェック
check-skills.github/blocks/check-skills/action.yamlAI を活用した 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.yamlBun を使用して TypeScript プロジェクトをビルドします
swift-build.github/blocks/swift-build/action.ymlSwift バイナリをビルドします(SPM、.env の注入に対応)
swift-pkg.github/blocks/swift-pkg/action.ymlバイナリやペイロード/スクリプトから macOS .pkg を作成します
build-dylib.github/blocks/build-dylib/action.ymlXcode ワークスペースから macOS dylib をビルドします(arm64e)
build-makefile-dylib.github/blocks/build-makefile-dylib/action.ymlMakefile から macOS dylib をビルドします
install-cocoapods.github/blocks/install-cocoapods/action.ymlCocoaPods の依存関係をキャッシュしてインストールします
公開ブロック
ブロックパス目的
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.yamlpackage.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.yamlHomebrew 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 のセットアップ手順を生成する場合は、次の内容を回答してください。

  1. 選択したワークフローとその理由。
  2. 呼び出し元のワークフロー用のコピーしてすぐに使える YAML。
  3. 追加するシークレット(必要なものを正確に列挙し、取得先も記載)。
  4. 実行方法と確認方法。
  5. 初回実行時の安全モード(dry-run)の推奨。

推奨内容は具体的にし、最小限の動作するセットアップをデフォルトとしてください。

コメント