@semantic-release/execによるカスタムシェルコマンド
semantic-releaseライフサイクルの各ステージでカスタムシェルコマンドを実行する@semantic-release/execの使用方法。ビルドスクリプト、デプロイコマンド、通知などを実行。
Plugin Configuration
詳細な説明
リリース中のカスタムコマンド実行
@semantic-release/execプラグインは、semantic-releaseライフサイクルの各ステップで任意のシェルコマンドを実行できます。カスタムビルドシステム、デプロイツール、通知サービスとの統合に最も柔軟なプラグインです。
設定
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/exec", {
"verifyConditionsCmd": "test -f Dockerfile",
"prepareCmd": "npm run build && echo ${nextRelease.version} > VERSION",
"publishCmd": "./scripts/deploy.sh ${nextRelease.version}",
"successCmd": "curl -X POST https://hooks.slack.com/services/xxx -d '{"text": "Released v${nextRelease.version}"}'",
"failCmd": "curl -X POST https://hooks.slack.com/services/xxx -d '{"text": "Release failed!"}'"
}],
"@semantic-release/github"
]
}
ライフサイクルフック
| フック | 実行タイミング |
|---|---|
verifyConditionsCmd |
最初に実行 — 前提条件を検証 |
prepareCmd |
公開前 — ビルド、バンドルなど |
publishCmd |
実際の公開ステップ |
successCmd |
リリース成功後 |
failCmd |
リリース失敗時 |
コマンド内のテンプレート変数
すべてのコマンドは環境変数にアクセスできます:
${nextRelease.version}— 新バージョン(例:1.2.3)${nextRelease.type}— major、minor、patch${lastRelease.version}— 前バージョン
ユースケース
カスタムデプロイスクリプト、Dockerビルド、SlackやTeams通知、CDNキャッシュ無効化、データベースマイグレーション、標準プラグインでカバーされないその他のプロセスとsemantic-releaseを統合する必要があるプロジェクト向け。