-
版號 bump(預設 patch)
npm run bump
-
取得版本與 commit 基本資訊
NEW_VERSION=$(node -p "require('./package.json').version")
RELEASE_BRANCH=$(git rev-parse --abbrev-ref HEAD)
RELEASE_DATE=$(date +%Y-%m-%d)
-
建立版本提交
git add package.json package-lock.json
git commit -m "chore(release): bump patch version to ${NEW_VERSION}"
RELEASE_COMMIT=$(git rev-parse HEAD)
RELEASE_MESSAGE=$(git log -1 --pretty=%s)
-
建立版本標籤
git tag -a "v${NEW_VERSION}" -m "Release v${NEW_VERSION}"
-
觸發 CI 發佈(預設)
git push origin "${RELEASE_BRANCH}" --follow-tags
這會觸發 .github/workflows/publish.yml:
push 到 master 且 package.json 版本變更時,自動執行 npm publish
如需立即執行且目前流程未自動啟動,補執行 gh workflow run "Publish to NPM" --ref "$RELEASE_BRANCH"
-
等候 CI 發佈結果,且必須確認成功
PUBLISH_RUN_ID=$(gh run list --workflow "Publish to NPM" --branch "$RELEASE_BRANCH" --limit 1 --json databaseId,startedAt -q '.[0].databaseId')
gh run watch "$PUBLISH_RUN_ID"
if [ "$(gh run view "$PUBLISH_RUN_ID" --json conclusion -q .conclusion)" != "success" ]; then
echo "Publish workflow failed, aborting release step."
exit 1
fi
npm view "@willh/git-setup@${NEW_VERSION}" version
-
建立 release note 內容(維持舊版式)
NOTES_FILE=$(mktemp -t git-setup-release-notes.XXXXXX)
CHANGES=$(awk -v v="## ${NEW_VERSION}" '
$0 == v {found=1; next}
found && /^## / {exit}
found {print}
' CHANGELOG.md)
cat > "$NOTES_FILE" <<"EOF_NOTES"