mirror of
https://git.bjxgj.com/xgj/xgj-actions.git
synced 2025-10-14 11:23:37 +08:00
feat: 添加最新版本获取功能,更新文档示例以展示如何使用最新版本进行部署
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
- 🏷️ **标签触发检测**:自动识别版本标签(如 `v1.2.3`)并提取版本号
|
||||
- 🔄 **版本分支检测**:识别版本分支(如 `v1.2.x`)并提取版本信息
|
||||
- 🆕 **常规分支处理**:对于非版本分支提供基础信息
|
||||
- 📦 **最新版本获取**:始终获取仓库中的最新版本号,无论触发方式如何
|
||||
- 🎯 **灵活的版本前缀**:支持自定义版本前缀(默认为 `v`)
|
||||
- 🔧 **版本格式转换**:自动生成横线格式的版本号(如 `v1.2.3` → `v1-2-3`)
|
||||
- 📤 **环境变量输出**:自动设置环境变量供后续步骤使用
|
||||
@@ -14,21 +15,24 @@
|
||||
|
||||
## 输入参数
|
||||
|
||||
| 参数名 | 描述 | 必需 | 默认值 |
|
||||
| ---------------- | -------------------------------- | ---- | ------ |
|
||||
| `version-prefix` | 版本前缀,用于匹配版本标签或分支 | 否 | `v` |
|
||||
| 参数名 | 描述 | 必需 | 默认值 |
|
||||
| -------------------------- | ------------------------------ | ---- | ------- |
|
||||
| `version-prefix` | 版本前缀,用于匹配版本标签或分支 | 否 | `v` |
|
||||
| `use-latest-version` | 在非版本触发时是否使用最新版本 | 否 | `false` |
|
||||
|
||||
## 输出参数
|
||||
|
||||
| 参数名 | 描述 | 示例值 |
|
||||
| -------------------- | ------------------------ | ------------------------------- |
|
||||
| `ref-type` | 引用类型 | `tag` 或 `branch` |
|
||||
| `ref-name` | 引用名称 | `v1.2.3`、`main`、`feature/xxx` |
|
||||
| `is-version-trigger` | 是否为版本触发 | `true` 或 `false` |
|
||||
| `trigger-version` | 触发的版本号(去除前缀) | `1.2.3` |
|
||||
| `version-with-dash` | 版本号,点替换为横线 | `1-2-3` |
|
||||
| `trigger-source` | 触发源 | `tag` 或 `branch` |
|
||||
| `full-ref` | 完整的 Git 引用 | `refs/tags/v1.2.3` |
|
||||
| 参数名 | 描述 | 示例值 |
|
||||
| ------------------------------ | ---------------------------- | ------------------------------- |
|
||||
| `ref-type` | 引用类型 | `tag` 或 `branch` |
|
||||
| `ref-name` | 引用名称 | `v1.2.3`、`main`、`feature/xxx` |
|
||||
| `is-version-trigger` | 是否为版本触发 | `true` 或 `false` |
|
||||
| `trigger-version` | 触发的版本号(标准化格式) | `v1.2.3` |
|
||||
| `version-with-dash` | 版本号,点替换为横线 | `v1-2-3` |
|
||||
| `trigger-source` | 触发源 | `tag` 或 `branch` |
|
||||
| `full-ref` | 完整的 Git 引用 | `refs/tags/v1.2.3` |
|
||||
| `latest-version` | 仓库中的最新版本号 | `v1.2.3` |
|
||||
| `latest-version-with-dash` | 最新版本号,点替换为横线 | `v1-2-3` |
|
||||
|
||||
## 环境变量
|
||||
|
||||
@@ -56,17 +60,24 @@ jobs:
|
||||
outputs:
|
||||
is-version-trigger: ${{ steps.version-info.outputs.is-version-trigger }}
|
||||
trigger-version: ${{ steps.version-info.outputs.trigger-version }}
|
||||
latest-version: ${{ steps.version-info.outputs.latest-version }}
|
||||
version-with-dash: ${{ steps.version-info.outputs.version-with-dash }}
|
||||
trigger-source: ${{ steps.version-info.outputs.trigger-source }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # 必需:获取完整历史以获取所有标签
|
||||
|
||||
- name: 获取版本信息
|
||||
id: version-info
|
||||
uses: actions/xgj/trigger-version@v1
|
||||
uses: ./trigger-version
|
||||
|
||||
- name: 显示版本信息
|
||||
run: |
|
||||
echo "是否版本触发: ${{ steps.version-info.outputs.is-version-trigger }}"
|
||||
echo "版本号: ${{ steps.version-info.outputs.trigger-version }}"
|
||||
echo "触发版本: ${{ steps.version-info.outputs.trigger-version }}"
|
||||
echo "最新版本: ${{ steps.version-info.outputs.latest-version }}"
|
||||
echo "横线版本号: ${{ steps.version-info.outputs.version-with-dash }}"
|
||||
echo "触发源: ${{ steps.version-info.outputs.trigger-source }}"
|
||||
|
||||
@@ -81,6 +92,25 @@ jobs:
|
||||
echo "Docker标签: myapp:${{ needs.get-version-info.outputs.version-with-dash }}"
|
||||
```
|
||||
|
||||
### 使用最新版本功能
|
||||
|
||||
```yaml
|
||||
- name: 获取版本信息(启用最新版本)
|
||||
id: version-info
|
||||
uses: ./trigger-version
|
||||
with:
|
||||
use-latest-version: true # 在非版本触发时使用最新版本
|
||||
|
||||
- name: 使用最新版本进行构建
|
||||
run: |
|
||||
if [[ -n "${{ steps.version-info.outputs.latest-version }}" ]]; then
|
||||
echo "构建镜像标签: myapp:${{ steps.version-info.outputs.latest-version-with-dash }}"
|
||||
# docker build -t myapp:${{ steps.version-info.outputs.latest-version-with-dash }} .
|
||||
else
|
||||
echo "未找到版本标签,使用默认标签"
|
||||
# docker build -t myapp:latest .
|
||||
fi
|
||||
|
||||
### 自定义版本前缀
|
||||
|
||||
```yaml
|
||||
@@ -183,14 +213,19 @@ jobs:
|
||||
|
||||
1. **条件部署**:使用 `is-version-trigger` 来决定是否执行生产部署
|
||||
2. **版本标记**:在构建产物中使用 `trigger-version` 进行版本标记
|
||||
3. **Docker 标签**:使用 `version-with-dash` 作为 Docker 镜像标签(避免点号问题)
|
||||
4. **环境区分**:根据触发源选择不同的部署环境
|
||||
5. **日志记录**:记录详细的版本信息用于追踪和调试
|
||||
3. **最新版本获取**:使用 `latest-version` 输出来获取仓库的最新版本,适用于回滚或版本比较
|
||||
4. **Docker 标签**:使用 `version-with-dash` 作为 Docker 镜像标签(避免点号问题)
|
||||
5. **环境区分**:根据触发源选择不同的部署环境
|
||||
6. **完整历史获取**:在工作流中使用 `fetch-depth: 0` 确保能获取所有标签
|
||||
7. **日志记录**:记录详细的版本信息用于追踪和调试
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 版本前缀区分大小写
|
||||
- 空的版本号会被设置为空字符串
|
||||
- `latest-version` 输出始终获取仓库的最新版本,无论触发方式如何
|
||||
- 获取最新版本需要完整的 Git 历史,建议使用 `fetch-depth: 0`
|
||||
- 最新版本按语义化版本排序,确保标签格式符合版本规范
|
||||
- 确保工作流触发条件与你的版本策略一致
|
||||
- 在使用输出参数时注意布尔值的字符串比较(使用 `== 'true'`)
|
||||
|
||||
|
Reference in New Issue
Block a user