更新snapshot.yml:新增npx dpml-prompt@${version} action <roleId>命令,简化使用说明,强调测试最新develop分支功能。

This commit is contained in:
sean
2025-06-02 09:58:52 +08:00
parent a1f704fa42
commit 17a8de750e
3 changed files with 230 additions and 4 deletions

View File

@ -94,12 +94,10 @@ jobs:
\`\`\`bash \`\`\`bash
npx dpml-prompt@${version} hello npx dpml-prompt@${version} hello
npx dpml-prompt@${version} init npx dpml-prompt@${version} init
npx dpml-prompt@${version} action <roleId>
\`\`\` \`\`\`
你可以使用这个snapshot版本测试最新功能。包含以下改进: 💡 你可以使用这个snapshot版本测试最新的develop分支功能。`;
- ✅ 修复了Windows平台platform-folders兼容性问题
- ✅ 解决了协议路径警告问题
- 🔧 使用env-paths替代platform-folders提升跨平台兼容性`;
// 为每个相关PR添加评论 // 为每个相关PR添加评论
for (const pr of prs) { for (const pr of prs) {

View File

@ -0,0 +1,184 @@
# Snapshot 发布系统
## 概述
PromptX 使用自动化的 snapshot 发布系统,为每次 develop 分支的推送自动生成和发布 snapshot 版本,让开发者能够快速测试最新功能。
## 版本号生成规则
### 格式
```
{base-version}-snapshot.{timestamp}.{commit-hash}
```
### 示例
```
0.0.2-snapshot.20250602095731.a1f704f
```
### 组成部分
- **base-version**: 基础版本号(从 package.json 中提取)
- **snapshot**: 标识这是一个 snapshot 版本
- **timestamp**: 14位时间戳 (YYYYMMDDHHMMSS)
- **commit-hash**: 7位短 commit hash
## 自动发布流程
### 触发条件
- 推送到 `develop` 分支
- 所有测试通过
### 发布步骤
1. **环境准备**: 配置 Node.js 和 pnpm
2. **测试验证**: 运行完整测试套件
3. **版本生成**: 使用时间戳和 commit hash 生成唯一版本号
4. **NPM 发布**: 发布到 NPM registry标签为 `snapshot`
5. **PR 通知**: 自动在相关 PR 中添加评论
### CI 配置文件
`.github/workflows/snapshot.yml`
## 使用方法
### 安装和使用 Snapshot 版本
#### 方式1使用具体版本号
```bash
npx dpml-prompt@0.0.2-snapshot.20250602095731.a1f704f hello
npx dpml-prompt@0.0.2-snapshot.20250602095731.a1f704f init
```
#### 方式2使用 snapshot 标签(最新 snapshot
```bash
npx dpml-prompt@snapshot hello
npx dpml-prompt@snapshot init
```
### 查看当前 snapshot 版本
```bash
npm view dpml-prompt@snapshot version
```
### 查看所有 snapshot 版本
```bash
npm view dpml-prompt versions --json | grep snapshot
```
## 开发流程
### 开发者工作流
1. **开发功能**: 在 feature 分支开发
2. **合并到 develop**: 创建 PR 合并到 develop
3. **自动发布**: 推送到 develop 后自动触发 snapshot 发布
4. **测试验证**: 使用 snapshot 版本测试功能
5. **反馈修复**: 根据测试结果进行调整
### 测试新功能
```bash
# 获取最新 snapshot 版本
npx dpml-prompt@snapshot hello
# 测试修复的功能
npx dpml-prompt@snapshot init
npx dpml-prompt@snapshot learn assistant
```
## 版本管理
### Snapshot vs Release
- **Snapshot**: 开发中的预览版本,频繁更新
- **Release**: 稳定的正式版本,经过充分测试
### 版本生命周期
```
feature branch → develop (snapshot) → main (release)
```
### 清理旧版本
NPM 会保留所有发布的版本,但可以通过以下方式管理:
```bash
# 查看所有版本
npm view dpml-prompt versions --json
# 删除特定版本(需要维护者权限)
npm unpublish dpml-prompt@0.0.2-snapshot.xxx
```
## 优势
### 1. 零冲突发布
- 每次发布使用唯一版本号
- 避免版本冲突导致的发布失败
- 支持并行开发和测试
### 2. 可追溯性
- 版本号包含时间戳和 commit hash
- 容易追溯到具体的代码变更
- 便于问题定位和调试
### 3. 快速反馈
- 推送后立即可用
- 无需手动发布流程
- 支持快速迭代
## 故障排除
### 常见问题
#### 1. 发布失败
检查 CI 日志中的错误信息:
- NPM 认证问题
- 测试失败
- 网络连接问题
#### 2. 版本号重复
新的系统避免了这个问题,但如果遇到:
- 检查时间戳生成逻辑
- 确认 commit hash 正确
#### 3. 安装失败
```bash
# 清除 npm 缓存
npm cache clean --force
# 尝试最新 snapshot
npx dpml-prompt@snapshot hello
```
### 调试工具
#### 本地测试版本生成
```bash
./scripts/test-snapshot-version.sh
```
#### 检查发布状态
```bash
# 查看 NPM 上的最新版本
npm view dpml-prompt@snapshot
# 查看发布历史
npm view dpml-prompt versions --json
```
## 最新改进
### v2024.12 更新
- ✅ 修复了 Windows 平台 platform-folders 兼容性问题
- ✅ 解决了协议路径警告问题
- ✅ 使用 env-paths 替代 platform-folders提升跨平台兼容性
- ✅ 完善的 e2e 测试覆盖
### 测试验证
所有改进都通过了完整的测试套件验证:
- Platform-folders 兼容性测试19/19 ✅
- 协议路径警告测试:全部通过 ✅
- 跨平台兼容性测试Windows/macOS/Linux ✅
## 相关文档
- [CI/CD 配置](.github/workflows/snapshot.yml)
- [测试套件](../src/tests/issues/)
- [版本测试脚本](../scripts/test-snapshot-version.sh)
- [项目主文档](../README.md)

View File

@ -0,0 +1,44 @@
#!/bin/bash
# 测试snapshot版本生成逻辑
echo "🔍 测试Snapshot版本号生成逻辑"
echo "================================"
# 获取当前时间戳和短commit hash
TIMESTAMP=$(date +%Y%m%d%H%M%S)
SHORT_COMMIT=$(git rev-parse --short HEAD)
# 读取当前版本移除任何现有的snapshot标识
CURRENT_VERSION=$(node -p "require('./package.json').version.split('-')[0]")
# 生成唯一的snapshot版本号base-snapshot.timestamp.commit
SNAPSHOT_VERSION="${CURRENT_VERSION}-snapshot.${TIMESTAMP}.${SHORT_COMMIT}"
echo "📦 当前基础版本: $CURRENT_VERSION"
echo "⏰ 时间戳: $TIMESTAMP"
echo "🔗 短commit hash: $SHORT_COMMIT"
echo "🚀 生成的snapshot版本: $SNAPSHOT_VERSION"
# 验证版本号格式
if [[ $SNAPSHOT_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+-snapshot\.[0-9]{14}\.[a-f0-9]{7}$ ]]; then
echo "✅ 版本号格式正确"
else
echo "❌ 版本号格式不正确"
exit 1
fi
# 模拟设置版本号
echo ""
echo "🔧 模拟设置版本号..."
npm version $SNAPSHOT_VERSION --no-git-tag-version
echo "📋 更新后的package.json版本:"
node -p "require('./package.json').version"
# 恢复原始版本
echo ""
echo "🔄 恢复原始版本..."
npm version $CURRENT_VERSION --no-git-tag-version
echo "✅ 测试完成snapshot版本生成逻辑工作正常"