-
Notifications
You must be signed in to change notification settings - Fork 2
97 lines (84 loc) · 3.08 KB
/
Copy pathrelease.yml
File metadata and controls
97 lines (84 loc) · 3.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
name: 自动版本发布
on:
# 手动触发工作流
workflow_dispatch:
inputs:
force_mode:
description: '强制模式覆盖 (留空使用 version.txt 中的设置)'
required: false
type: choice
options:
- 'default'
- tag_only
- release
# 当推送到主分支并且版本文件有变化时触发
push:
branches: [ main, master ]
paths:
- 'version.txt'
jobs:
process-version:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 读取版本信息
id: version_info
run: |
VERSION=$(grep "version=" version.txt | cut -d'=' -f2)
MODE=$(grep "mode=" version.txt | cut -d'=' -f2)
DESCRIPTION=$(grep "description=" version.txt | cut -d'=' -f2- | sed 's/^=//')
# 如果手动触发并指定了强制模式,则使用指定的模式
if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ ! -z "${{ github.event.inputs.force_mode }}" ]; then
MODE="${{ github.event.inputs.force_mode }}"
fi
echo "VERSION=v${VERSION}" >> $GITHUB_ENV
echo "MODE=${MODE}" >> $GITHUB_ENV
echo "DESCRIPTION=${DESCRIPTION}" >> $GITHUB_ENV
echo "版本: v${VERSION}"
echo "模式: ${MODE}"
echo "描述: ${DESCRIPTION}"
- name: 设置 JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
# 构建应用
- name: 构建应用
run: |
# 这里替换为您的构建命令
# 例如: ./gradlew build
echo "正在构建应用 ${{ env.VERSION }}..."
# 创建一个测试文件,确保有东西可以上传
mkdir -p build
echo "测试构建 ${{ env.VERSION }}" > build/build-info.txt
# 上传构建产物 - 修复版本
- name: 上传构建产物
uses: actions/upload-artifact@v4
with:
name: app-builds-${{ env.VERSION }}
path: build/
if-no-files-found: warn
# 创建标签
- name: 创建 Git 标签
run: |
git config --local user.email "${{ secrets.GIT_USER_EMAIL }}"
git config --local user.name "${{ secrets.GIT_USER_NAME }}"
git tag -a ${{ env.VERSION }} -m "${{ env.DESCRIPTION }}"
git push https://${{ secrets.PAT_TOKEN }}@github.com/${{ github.repository }}.git ${{ env.VERSION }}
echo "已创建标签: ${{ env.VERSION }}"
# 如果模式是 release,则创建 GitHub Release
- name: 创建 Release
if: env.MODE == 'release'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.VERSION }}
name: 发布 ${{ env.VERSION }}
body: ${{ env.DESCRIPTION }}
draft: false
prerelease: false
files: build/build-info.txt
env:
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}