-
-
Notifications
You must be signed in to change notification settings - Fork 171
258 lines (229 loc) · 10.4 KB
/
release.yml
File metadata and controls
258 lines (229 loc) · 10.4 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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
name: Release
on:
push:
tags:
- 'v*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Get version
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
# Read changelog
- name: Read changelog
id: changelog
run: |
VERSION_FILE="changelog/${GITHUB_REF#refs/tags/}.md"
if [ -f "$VERSION_FILE" ]; then
CHANGELOG_CONTENT=$(cat "$VERSION_FILE")
echo "CHANGELOG_CONTENT<<EOF" >> $GITHUB_ENV
echo "$CHANGELOG_CONTENT" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
else
echo "CHANGELOG_CONTENT=" >> $GITHUB_ENV
fi
# Build mcp-gateway
- name: Build mcp-gateway for Linux amd64
run: |
GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-linux-amd64 ./cmd/mcp-gateway
- name: Build mcp-gateway for Linux arm64
run: |
GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-linux-arm64 ./cmd/mcp-gateway
- name: Build mcp-gateway for macOS amd64
run: |
GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-darwin-amd64 ./cmd/mcp-gateway
- name: Build mcp-gateway for macOS arm64
run: |
GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-darwin-arm64 ./cmd/mcp-gateway
- name: Build mcp-gateway for Windows amd64
run: |
GOOS=windows GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-windows-amd64.exe ./cmd/mcp-gateway
# Build mock-user-svc
- name: Build mock-user-svc for Linux amd64
run: |
GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-linux-amd64 ./cmd/mock-user-svc
- name: Build mock-user-svc for Linux arm64
run: |
GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-linux-arm64 ./cmd/mock-user-svc
- name: Build mock-user-svc for macOS amd64
run: |
GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-darwin-amd64 ./cmd/mock-user-svc
- name: Build mock-user-svc for macOS arm64
run: |
GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-darwin-arm64 ./cmd/mock-user-svc
- name: Build mock-user-svc for Windows amd64
run: |
GOOS=windows GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-windows-amd64.exe ./cmd/mock-user-svc
# Build apiserver
- name: Build apiserver for Linux amd64
run: |
GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-linux-amd64 ./cmd/apiserver
- name: Build apiserver for Linux arm64
run: |
GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-linux-arm64 ./cmd/apiserver
- name: Build apiserver for macOS amd64
run: |
GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-darwin-amd64 ./cmd/apiserver
- name: Build apiserver for macOS arm64
run: |
GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-darwin-arm64 ./cmd/apiserver
- name: Build apiserver for Windows amd64
run: |
GOOS=windows GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-windows-amd64.exe ./cmd/apiserver
# Build web
- name: Install web dependencies
run: |
cd web
npm ci
- name: Build web
run: |
cd web
VITE_API_BASE_URL=/api \
VITE_WS_BASE_URL=ws://localhost:5234/ws \
VITE_BASE_URL=/web \
VITE_MCP_GATEWAY_BASE_URL=http://localhost:5235 \
npm run build
mv dist ../web-build
# Create zip packages for each platform
- name: Create Linux amd64 package
run: |
mkdir -p release/linux-amd64
# Copy binaries
cp mcp-gateway-linux-amd64 release/linux-amd64/mcp-gateway
cp apiserver-linux-amd64 release/linux-amd64/apiserver
cp mock-user-svc-linux-amd64 release/linux-amd64/mock-user-svc
# Copy configs
mkdir -p release/linux-amd64/configs
cp configs/apiserver.yaml release/linux-amd64/configs/
cp configs/mcp-gateway.yaml release/linux-amd64/configs/
# Create data directory and empty files
mkdir -p release/linux-amd64/data
touch release/linux-amd64/data/mcp-gateway.db
touch release/linux-amd64/data/mcp-gateway.pid
# Copy and modify .env
cp .env.example release/linux-amd64/.env
sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/linux-amd64/.env
# Copy web
cp -r web-build release/linux-amd64/web
# Create zip
cd release/linux-amd64
zip -r ../mcp-gateway-linux-amd64.zip .
- name: Create Linux arm64 package
run: |
mkdir -p release/linux-arm64
# Copy binaries
cp mcp-gateway-linux-arm64 release/linux-arm64/mcp-gateway
cp apiserver-linux-arm64 release/linux-arm64/apiserver
cp mock-user-svc-linux-arm64 release/linux-arm64/mock-user-svc
# Copy configs
mkdir -p release/linux-arm64/configs
cp configs/apiserver.yaml release/linux-arm64/configs/
cp configs/mcp-gateway.yaml release/linux-arm64/configs/
# Create data directory and empty files
mkdir -p release/linux-arm64/data
touch release/linux-arm64/data/mcp-gateway.db
touch release/linux-arm64/data/mcp-gateway.pid
# Copy and modify .env
cp .env.example release/linux-arm64/.env
sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/linux-arm64/.env
# Copy web
cp -r web-build release/linux-arm64/web
# Create zip
cd release/linux-arm64
zip -r ../mcp-gateway-linux-arm64.zip .
- name: Create macOS amd64 package
run: |
mkdir -p release/darwin-amd64
# Copy binaries
cp mcp-gateway-darwin-amd64 release/darwin-amd64/mcp-gateway
cp apiserver-darwin-amd64 release/darwin-amd64/apiserver
cp mock-user-svc-darwin-amd64 release/darwin-amd64/mock-user-svc
# Copy configs
mkdir -p release/darwin-amd64/configs
cp configs/apiserver.yaml release/darwin-amd64/configs/
cp configs/mcp-gateway.yaml release/darwin-amd64/configs/
# Create data directory and empty files
mkdir -p release/darwin-amd64/data
touch release/darwin-amd64/data/mcp-gateway.db
touch release/darwin-amd64/data/mcp-gateway.pid
# Copy and modify .env
cp .env.example release/darwin-amd64/.env
sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/darwin-amd64/.env
# Copy web
cp -r web-build release/darwin-amd64/web
# Create zip
cd release/darwin-amd64
zip -r ../mcp-gateway-darwin-amd64.zip .
- name: Create macOS arm64 package
run: |
mkdir -p release/darwin-arm64
# Copy binaries
cp mcp-gateway-darwin-arm64 release/darwin-arm64/mcp-gateway
cp apiserver-darwin-arm64 release/darwin-arm64/apiserver
cp mock-user-svc-darwin-arm64 release/darwin-arm64/mock-user-svc
# Copy configs
mkdir -p release/darwin-arm64/configs
cp configs/apiserver.yaml release/darwin-arm64/configs/
cp configs/mcp-gateway.yaml release/darwin-arm64/configs/
# Create data directory and empty files
mkdir -p release/darwin-arm64/data
touch release/darwin-arm64/data/mcp-gateway.db
touch release/darwin-arm64/data/mcp-gateway.pid
# Copy and modify .env
cp .env.example release/darwin-arm64/.env
sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/darwin-arm64/.env
# Copy web
cp -r web-build release/darwin-arm64/web
# Create zip
cd release/darwin-arm64
zip -r ../mcp-gateway-darwin-arm64.zip .
- name: Create Windows amd64 package
run: |
mkdir -p release/windows-amd64
# Copy binaries
cp mcp-gateway-windows-amd64.exe release/windows-amd64/mcp-gateway.exe
cp apiserver-windows-amd64.exe release/windows-amd64/apiserver.exe
cp mock-user-svc-windows-amd64.exe release/windows-amd64/mock-user-svc.exe
# Copy configs
mkdir -p release/windows-amd64/configs
cp configs/apiserver.yaml release/windows-amd64/configs/
cp configs/mcp-gateway.yaml release/windows-amd64/configs/
# Create data directory and empty files
mkdir -p release/windows-amd64/data
touch release/windows-amd64/data/mcp-gateway.db
touch release/windows-amd64/data/mcp-gateway.pid
# Copy and modify .env
cp .env.example release/windows-amd64/.env
# Windows uses a different sed command
sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/windows-amd64/.env
# Copy web
cp -r web-build release/windows-amd64/web
# Create zip
cd release/windows-amd64
zip -r ../mcp-gateway-windows-amd64.zip .
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
files: |
release/mcp-gateway-linux-amd64.zip
release/mcp-gateway-linux-arm64.zip
release/mcp-gateway-darwin-amd64.zip
release/mcp-gateway-darwin-arm64.zip
release/mcp-gateway-windows-amd64.zip
draft: false
prerelease: false
generate_release_notes: true
body: |
${{ env.CHANGELOG_CONTENT }}