-
Notifications
You must be signed in to change notification settings - Fork 7
147 lines (130 loc) · 5.61 KB
/
Copy pathrelease.yml
File metadata and controls
147 lines (130 loc) · 5.61 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: 构建发布创建
on:
push:
tags:
- 'v*' # 当推送以 v 开头的 tag 时触发,如 v1.0.0
jobs:
build-and-release:
runs-on: ubuntu-latest
env:
CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }}
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }}
idea_push_token: ${{ secrets.IDEA_PUSH_TOKEN }}
steps:
# ------------------- 新增步骤 -------------------
- name: 从 Tag 中提取分支名
id: get_branch_from_tag
run: |
# GITHUB_REF 的值是 'refs/tags/v6.7.0'
# 使用 shell 参数扩展移除前缀 'refs/tags/v'
BRANCH_NAME=${GITHUB_REF#refs/tags/v}
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
echo "提取到的分支名是: $BRANCH_NAME"
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ steps.get_branch_from_tag.outputs.branch_name }}
fetch-depth: 0 # 获取完整历史记录用于生成变更日志
- name: 准备JBR21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'jetbrains'
- name: 获取标签版本号
id: get_version
run: |
VERSION=${GITHUB_REF#refs/tags/v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "tag_name=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
# 这一步是导致错误的元凶之一,已移除 working-directory
- name: 授予gradlew执行权限
run: chmod +x gradlew
# 这一步是导致错误的元凶之二,已移除 working-directory
- name: 打包插件
run: |
./gradlew buildPlugin --no-daemon --stacktrace
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx1548m -XX:MaxMetaspaceSize=512m"
- name: 发布主插件到 JetBrains Marketplace
run: |
./gradlew publishPlugin --no-daemon --stacktrace
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx1548m -XX:MaxMetaspaceSize=512m"
# 这一步是导致错误的元凶之三,已移除 working-directory
- name: 获取构建的插件包(文件名和路径)
id: find_plugin
run: |
PLUGIN_FILE=$(find build/distributions -name "*.zip" | head -1)
if [ -z "$PLUGIN_FILE" ]; then
echo "No plugin file found!"
exit 1
fi
echo "plugin_file=$PLUGIN_FILE" >> $GITHUB_OUTPUT
echo "plugin_name=$(basename $PLUGIN_FILE)" >> $GITHUB_OUTPUT
echo "Found plugin: $PLUGIN_FILE"
# ------------------- FlutterX-MCP 构建 -------------------
- name: 授予 FlutterX-MCP gradlew 执行权限
run: chmod +x extras/FlutterX-MCP/gradlew
- name: 打包 FlutterX-MCP 插件
run: |
cd extras/FlutterX-MCP
./gradlew buildPlugin --no-daemon --stacktrace
env:
GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx1548m -XX:MaxMetaspaceSize=512m"
- name: 获取 FlutterX-MCP 插件包
id: find_mcp_plugin
run: |
MCP_PLUGIN_FILE=$(find extras/FlutterX-MCP/build/distributions -name "*.zip" | head -1)
if [ -z "$MCP_PLUGIN_FILE" ]; then
echo "No MCP plugin file found!"
exit 1
fi
echo "mcp_plugin_file=$MCP_PLUGIN_FILE" >> $GITHUB_OUTPUT
echo "mcp_plugin_name=$(basename $MCP_PLUGIN_FILE)" >> $GITHUB_OUTPUT
echo "Found MCP plugin: $MCP_PLUGIN_FILE"
# 这一步是导致错误的元凶之四,已移除 working-directory
- name: 获取版本更新说明
id: release_notes
run: |
CHANGELOG_CONTENT=$(./gradlew getChangelog --quiet)
echo -n "$CHANGELOG_CONTENT" > release-notes.md
echo 'changelog<<EOF' >> $GITHUB_OUTPUT
echo "$CHANGELOG_CONTENT" >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: 创建发布版本
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ steps.get_version.outputs.tag_name }}
name: FlutterX ${{ steps.get_version.outputs.tag_name }}
# body_path 需要指向正确的位置,现在是项目根目录
body_path: release-notes.md
# files 也需要指向正确的位置
files: |
${{ steps.find_plugin.outputs.plugin_file }}
${{ steps.find_mcp_plugin.outputs.mcp_plugin_file }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 上传 FlutterX 资产文件
uses: actions/upload-artifact@v7
with:
name: FlutterX-${{ steps.get_version.outputs.version }}
# path 也需要指向正确的位置
path: ${{ steps.find_plugin.outputs.plugin_file }}
retention-days: 30
- name: 上传 FlutterX-MCP 资产文件
uses: actions/upload-artifact@v7
with:
name: FlutterX-MCP-${{ steps.get_version.outputs.version }}
path: ${{ steps.find_mcp_plugin.outputs.mcp_plugin_file }}
retention-days: 30
# 这一步的 working-directory 也应该移除
- name: 插件验证
run: |
echo "✅ Plugin built successfully!"
echo "📁 FlutterX Plugin file: ${{ steps.find_plugin.outputs.plugin_name }}"
echo "📁 FlutterX-MCP Plugin file: ${{ steps.find_mcp_plugin.outputs.mcp_plugin_name }}"
echo "🏷️ Version: ${{ steps.get_version.outputs.version }}"
echo "📦 Release created: https://github.com/${{ github.repository }}/releases/tag/${{ steps.get_version.outputs.tag_name }}"