mirror of
https://git.bjxgj.com/xgj/xgj-actions.git
synced 2025-10-14 17:13:38 +08:00
feat: 添加触发版本信息的 GitHub Action,支持标签、版本分支和常规分支触发,提供详细的输出信息和环境变量,更新文档以反映新功能和使用示例。
This commit is contained in:
119
trigger-version/examples/conditional-deployment.yml
Normal file
119
trigger-version/examples/conditional-deployment.yml
Normal file
@@ -0,0 +1,119 @@
|
||||
# 条件部署示例
|
||||
# 这个示例展示了如何根据触发方式进行条件部署
|
||||
|
||||
name: Conditional Deployment
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ['main', 'develop', 'v*']
|
||||
tags: ['v*']
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
is-version-trigger: ${{ steps.version-info.outputs.is-version-trigger }}
|
||||
trigger-version: ${{ steps.version-info.outputs.trigger-version }}
|
||||
trigger-source: ${{ steps.version-info.outputs.trigger-source }}
|
||||
ref-name: ${{ steps.version-info.outputs.ref-name }}
|
||||
deploy-staging: ${{ steps.deployment-strategy.outputs.deploy-staging }}
|
||||
deploy-production: ${{ steps.deployment-strategy.outputs.deploy-production }}
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 获取版本信息
|
||||
id: version-info
|
||||
uses: ./trigger-version
|
||||
|
||||
- name: 确定部署策略
|
||||
id: deployment-strategy
|
||||
run: |
|
||||
IS_VERSION="${{ steps.version-info.outputs.is-version-trigger }}"
|
||||
REF_NAME="${{ steps.version-info.outputs.ref-name }}"
|
||||
|
||||
echo "分析部署策略..."
|
||||
|
||||
# 生产环境部署条件:版本标签触发
|
||||
if [[ "$IS_VERSION" == "true" && "${{ steps.version-info.outputs.trigger-source }}" == "tag" ]]; then
|
||||
echo "deploy-production=true" >> $GITHUB_OUTPUT
|
||||
echo "deploy-staging=false" >> $GITHUB_OUTPUT
|
||||
echo "🚀 将部署到生产环境"
|
||||
# 测试环境部署条件:main分支或版本分支
|
||||
elif [[ "$REF_NAME" == "main" || "$IS_VERSION" == "true" ]]; then
|
||||
echo "deploy-production=false" >> $GITHUB_OUTPUT
|
||||
echo "deploy-staging=true" >> $GITHUB_OUTPUT
|
||||
echo "🧪 将部署到测试环境"
|
||||
else
|
||||
echo "deploy-production=false" >> $GITHUB_OUTPUT
|
||||
echo "deploy-staging=false" >> $GITHUB_OUTPUT
|
||||
echo "⏭️ 跳过部署"
|
||||
fi
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 构建应用
|
||||
run: |
|
||||
echo "🔨 构建应用中..."
|
||||
# 模拟构建过程
|
||||
sleep 2
|
||||
echo "✅ 构建完成"
|
||||
|
||||
- name: 运行测试
|
||||
run: |
|
||||
echo "🧪 运行测试中..."
|
||||
# 模拟测试过程
|
||||
sleep 1
|
||||
echo "✅ 测试通过"
|
||||
|
||||
deploy-staging:
|
||||
needs: [analyze, build]
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.analyze.outputs.deploy-staging == 'true'
|
||||
environment: staging
|
||||
|
||||
steps:
|
||||
- name: 部署到测试环境
|
||||
run: |
|
||||
echo "🚀 部署到测试环境"
|
||||
echo "分支/版本: ${{ needs.analyze.outputs.ref-name }}"
|
||||
if [[ "${{ needs.analyze.outputs.is-version-trigger }}" == "true" ]]; then
|
||||
echo "版本号: ${{ needs.analyze.outputs.trigger-version }}"
|
||||
fi
|
||||
echo "✅ 测试环境部署完成"
|
||||
|
||||
- name: 发送通知
|
||||
run: |
|
||||
echo "📢 发送测试环境部署通知"
|
||||
# 这里可以集成 Slack、钉钉等通知
|
||||
|
||||
deploy-production:
|
||||
needs: [analyze, build]
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.analyze.outputs.deploy-production == 'true'
|
||||
environment: production
|
||||
|
||||
steps:
|
||||
- name: 部署到生产环境
|
||||
run: |
|
||||
echo "🚀 部署版本 ${{ needs.analyze.outputs.trigger-version }} 到生产环境"
|
||||
echo "触发源: ${{ needs.analyze.outputs.trigger-source }}"
|
||||
# 生产部署逻辑
|
||||
echo "✅ 生产环境部署完成"
|
||||
|
||||
- name: 创建 Release
|
||||
if: needs.analyze.outputs.trigger-source == 'tag'
|
||||
run: |
|
||||
echo "📦 创建 GitHub Release"
|
||||
echo "版本: v${{ needs.analyze.outputs.trigger-version }}"
|
||||
# 这里可以使用 gh CLI 创建 release
|
||||
|
||||
- name: 发送生产部署通知
|
||||
run: |
|
||||
echo "📢 发送生产环境部署通知"
|
||||
echo "🎉 版本 ${{ needs.analyze.outputs.trigger-version }} 已成功部署到生产环境"
|
Reference in New Issue
Block a user