@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を統合する必要があるプロジェクト向け。

試してみる — Semantic Release Config Builder

フルツールを開く