specsfy-release-cli
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePublicar o Specsfy CLI
发布Specsfy CLI
Executar na raiz do checkout oficial. Exigir versão , notas
confirmadas e autorização explícita antes de push.
X.Y.Z在官方代码仓库的根目录执行。推送前需要确认版本号、发布说明并获得明确授权。
X.Y.Z1. Classificar o estado
1. 检查状态
bash
git remote get-url origin
git branch --show-current
gh auth status
npm whoami
git fetch origin main --tags
git status --porcelain
git rev-parse HEAD
git rev-parse origin/main
git rev-parse --verify refs/tags/vX.Y.Z
gh release view vX.Y.Z --repo promovaweb/specsfy \
--json tagName,targetCommitish,bodyExigir remoto , branch , acesso ao
mesmo repositório, worktree limpa, igual a e ausência da
tag e do release para publicação nova.
https://github.com/promovaweb/specsfymainHEADorigin/mainEm estado parcial, não recriar commit, tag ou versão. Compare tag, commit,
artefatos e seção do changelog e retome apenas a etapa ausente.
bash
git remote get-url origin
git branch --show-current
gh auth status
npm whoami
git fetch origin main --tags
git status --porcelain
git rev-parse HEAD
git rev-parse origin/main
git rev-parse --verify refs/tags/vX.Y.Z
gh release view vX.Y.Z --repo promovaweb/specsfy \
--json tagName,targetCommitish,body需要满足以下条件:远程仓库为、当前分支为、拥有该仓库的访问权限、工作区干净、与一致,且目标标签和Release不存在(针对新版本发布)。
https://github.com/promovaweb/specsfymainHEADorigin/main如果是恢复未完成的发布流程,请勿重新创建提交、标签或版本。对比标签、提交、制品和变更日志部分,仅补全缺失的步骤。
2. Preparar versão
2. 准备版本
bash
python3 -B \
.agents/skills/specsfy-release-cli/scripts/release_changelog.py prepare \
--cli cli --version X.Y.Z --date YYYY-MM-DD \
--notes-file /caminho/notas.md
cd cli
npm install --package-lock-only --ignore-scripts
npm ci
npm run build:executable
npm run typecheck
npm test
npm run build
node dist/main.js --help
./bin/specsfy --version
npm publish --dry-run
cd ..
python3 -B \
.agents/skills/specsfy-release-cli/scripts/release_changelog.py extract \
--changelog cli/CHANGELOG.md --version X.Y.Z \
--output /caminho/release-notes.mdExigir em , , , CLI
instalado, binário e . O changelog promove as notas sob
.
X.Y.Zpackage.jsonsrc/version.tspackage-lock.jsonbin/specsfy.build.json## [X.Y.Z] - YYYY-MM-DDbash
python3 -B \
.agents/skills/specsfy-release-cli/scripts/release_changelog.py prepare \
--cli cli --version X.Y.Z --date YYYY-MM-DD \
--notes-file /caminho/notas.md
cd cli
npm install --package-lock-only --ignore-scripts
npm ci
npm run build:executable
npm run typecheck
npm test
npm run build
node dist/main.js --help
./bin/specsfy --version
npm publish --dry-run
cd ..
python3 -B \
.agents/skills/specsfy-release-cli/scripts/release_changelog.py extract \
--changelog cli/CHANGELOG.md --version X.Y.Z \
--output /caminho/release-notes.md需要确保、、中已更新为,CLI已安装,生成了二进制文件和。变更日志中需将发布说明移至下方。
package.jsonsrc/version.tspackage-lock.jsonX.Y.Zbin/specsfy.build.json## [X.Y.Z] - YYYY-MM-DD3. Revisar e versionar
3. 审核并打版本标签
Permitir somente:
- ;
cli/CHANGELOG.md - ;
cli/package.json - ;
cli/package-lock.json - ;
cli/src/version.ts - ;
cli/bin/specsfy - .
cli/bin/specsfy.build.json
Apresentar notas e diff. Após confirmação:
bash
git add cli/CHANGELOG.md cli/package.json cli/package-lock.json \
cli/src/version.ts \
cli/bin/specsfy cli/bin/specsfy.build.json
git commit -m "chore(release): vX.Y.Z"
git tag -a vX.Y.Z -m "Specsfy CLI vX.Y.Z"
git rev-parse HEAD
git rev-list -n 1 vX.Y.ZOs hashes devem ser idênticos. A tag pertence ao monorepo.
仅允许修改以下文件:
- ;
cli/CHANGELOG.md - ;
cli/package.json - ;
cli/package-lock.json - ;
cli/src/version.ts - ;
cli/bin/specsfy - 。
cli/bin/specsfy.build.json
展示发布说明和差异。确认后执行:
bash
git add cli/CHANGELOG.md cli/package.json cli/package-lock.json \
cli/src/version.ts \
cli/bin/specsfy cli/bin/specsfy.build.json
git commit -m "chore(release): vX.Y.Z"
git tag -a vX.Y.Z -m "Specsfy CLI vX.Y.Z"
git rev-parse HEAD
git rev-list -n 1 vX.Y.Z两个哈希值必须一致。标签属于monorepo仓库。
4. Publicar e comprovar
4. 发布并验证
bash
git push --atomic origin main vX.Y.Z
gh run watch --repo promovaweb/specsfy \
"$(gh run list --repo promovaweb/specsfy --branch vX.Y.Z \
--workflow Specsfy --limit 1 --json databaseId --jq '.[0].databaseId')"
gh release create vX.Y.Z \
--repo promovaweb/specsfy --verify-tag \
--title "Specsfy CLI vX.Y.Z" \
--notes-file /caminho/release-notes.md
gh release view vX.Y.Z --repo promovaweb/specsfy \
--json url,tagName,targetCommitish,body
gh release view vX.Y.Z --repo promovaweb/specsfy \
--json body > /caminho/release-publicado.json
python3 -B \
.agents/skills/specsfy-release-cli/scripts/release_changelog.py verify \
--changelog cli/CHANGELOG.md --version X.Y.Z \
--release-json /caminho/release-publicado.json
git ls-remote origin "refs/tags/vX.Y.Z^{}"
gh run list --repo promovaweb/specsfy --branch vX.Y.Z --workflow SpecsfyConfirmar tag remota, CI e equivalência exata das notas. Em falha, preservar o
estado e reclassificar. O job da tag publica no npm. A
proveniência é incluída quando o repositório estiver público. Nunca crie uma tag
compensatória.
@promovaweb/specsfybash
git push --atomic origin main vX.Y.Z
gh run watch --repo promovaweb/specsfy \
"$(gh run list --repo promovaweb/specsfy --branch vX.Y.Z \
--workflow Specsfy --limit 1 --json databaseId --jq '.[0].databaseId')"
gh release create vX.Y.Z \
--repo promovaweb/specsfy --verify-tag \
--title "Specsfy CLI vX.Y.Z" \
--notes-file /caminho/release-notes.md
gh release view vX.Y.Z --repo promovaweb/specsfy \
--json url,tagName,targetCommitish,body
gh release view vX.Y.Z --repo promovaweb/specsfy \
--json body > /caminho/release-publicado.json
python3 -B \
.agents/skills/specsfy-release-cli/scripts/release_changelog.py verify \
--changelog cli/CHANGELOG.md --version X.Y.Z \
--release-json /caminho/release-publicado.json
git ls-remote origin "refs/tags/vX.Y.Z^{}"
gh run list --repo promovaweb/specsfy --branch vX.Y.Z --workflow Specsfy确认远程标签、CI流程正常,且发布说明完全一致。若失败,保留当前状态并重新检查。标签对应的CI任务会将发布至npm。当仓库公开后会包含溯源信息。切勿创建补偿标签。
@promovaweb/specsfy