Skip to content

Commit cb907b5

Browse files
committed
perf: change build
1 parent e347cac commit cb907b5

File tree

2 files changed

+68
-23
lines changed

2 files changed

+68
-23
lines changed

.github/workflows/build.yml

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,58 @@ env:
2525
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
2626

2727
jobs:
28+
pre-build:
29+
name: pre-build go client
30+
runs-on: ubuntu-latest
31+
outputs:
32+
go-client-artifacts: ${{ steps.upload-go-client.outputs.artifact-name }}
33+
34+
steps:
35+
- name: Check out git repository
36+
uses: actions/checkout@v4
37+
38+
- name: Setup Go
39+
uses: actions/setup-go@v4
40+
with:
41+
go-version: '1.21'
42+
43+
- name: Build Go client for all platforms
44+
run: make build-all
45+
working-directory: go-client
46+
47+
- name: Upload Go client artifacts
48+
id: upload-go-client
49+
uses: actions/upload-artifact@v4
50+
with:
51+
name: go-client-binaries
52+
path: go-client/build/
53+
retention-days: 1
54+
2855
build:
2956
name: build tauri app
3057
runs-on: ${{ matrix.os }}
58+
needs: pre-build
3159

3260
strategy:
3361
fail-fast: false
3462
matrix:
35-
os: [macos-14, windows-latest]
63+
os: [macos-14, windows-latest, ubuntu-latest]
3664

3765
steps:
3866
- name: Check out git repository
3967
uses: actions/checkout@v4
4068

69+
- name: Download Go client artifacts
70+
uses: actions/download-artifact@v4
71+
with:
72+
name: go-client-binaries
73+
path: go-client/build/
74+
4175
- name: Setup Go
4276
uses: actions/setup-go@v4
4377
with:
4478
go-version: '1.21'
4579

46-
- name: Build Go client
47-
run: make build-client
48-
working-directory: go-client
49-
5080
- name: Setup pnpm
5181
uses: pnpm/action-setup@v4
5282

@@ -135,7 +165,7 @@ jobs:
135165
release:
136166
name: create release
137167
runs-on: ubuntu-latest
138-
needs: build
168+
needs: [pre-build, build]
139169
if: startsWith(github.ref, 'refs/tags/')
140170

141171
steps:

go-client/Makefile

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ build-current:
2525
@mkdir -p $(BUILDDIR)/$(CURRENT_OS)-$(CURRENT_ARCH)
2626
@if [ "$(CURRENT_OS)" = "windows" ]; then \
2727
$(CLIENTBUILD) -ldflags "$(LDFLAGS) -H windowsgui" -o $(BUILDDIR)/$(CURRENT_OS)-$(CURRENT_ARCH)/JumpServerClient.exe $(CLIENTSRCFILE); \
28-
$(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/$(CURRENT_OS)-$(CURRENT_ARCH)/client.exe $(SSHCSRCFILE); \
28+
echo "Skipping sshc build on Windows (not supported)"; \
2929
else \
3030
$(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/$(CURRENT_OS)-$(CURRENT_ARCH)/JumpServerClient $(CLIENTSRCFILE); \
3131
$(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/$(CURRENT_OS)-$(CURRENT_ARCH)/client $(SSHCSRCFILE); \
@@ -41,32 +41,47 @@ build-current:
4141
cp $(BASEPATH)/pkg/autoit/*.dll $(BASEPATH)/../src-tauri/resources/bin/windows/; \
4242
fi
4343

44-
# 构建所有平台
44+
# 构建所有平台 - 优化版本:在一个任务中构建所有目标
4545
.PHONY: build-all
4646
build-all:
47+
@echo "Building all platforms in one task..."
48+
@rm -rf $(BUILDDIR)
49+
@mkdir -p $(BUILDDIR)/{darwin-amd64,darwin-arm64,linux-amd64,linux-arm64,windows}
50+
51+
@echo "Building Darwin AMD64..."
4752
GOARCH=amd64 GOOS=darwin $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/darwin-amd64/JumpServerClient $(CLIENTSRCFILE)
4853
GOARCH=amd64 GOOS=darwin $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/darwin-amd64/client $(SSHCSRCFILE)
49-
54+
55+
@echo "Building Darwin ARM64..."
5056
GOARCH=arm64 GOOS=darwin $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/darwin-arm64/JumpServerClient $(CLIENTSRCFILE)
5157
GOARCH=arm64 GOOS=darwin $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/darwin-arm64/client $(SSHCSRCFILE)
52-
53-
GOARCH=amd64 GOOS=windows $(CLIENTBUILD) -ldflags "$(LDFLAGS) -H windowsgui" -o $(BUILDDIR)/windows/JumpServerClient.exe $(CLIENTSRCFILE)
54-
GOARCH=386 GOOS=windows $(CLIENTBUILD) -ldflags "$(LDFLAGS) -H windowsgui" -o $(BUILDDIR)/windows/JumpServerClient32.exe $(CLIENTSRCFILE)
55-
58+
59+
@echo "Building Linux AMD64..."
5660
GOARCH=amd64 GOOS=linux $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/linux-amd64/JumpServerClient $(CLIENTSRCFILE)
5761
GOARCH=amd64 GOOS=linux $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/linux-amd64/client $(SSHCSRCFILE)
58-
62+
63+
@echo "Building Linux ARM64..."
5964
GOARCH=arm64 GOOS=linux $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/linux-arm64/JumpServerClient $(CLIENTSRCFILE)
6065
GOARCH=arm64 GOOS=linux $(CLIENTBUILD) -ldflags "$(LDFLAGS)" -o $(BUILDDIR)/linux-arm64/client $(SSHCSRCFILE)
61-
62-
mkdir -p $(BASEPATH)/../src-tauri/resources/bin/
63-
64-
cp -R $(BASEPATH)/Scripts $(BUILDDIR)/darwin-amd64/
65-
cp -R $(BASEPATH)/Scripts $(BUILDDIR)/darwin-arm64/
66-
cp -R $(BUILDDIR)/* $(BASEPATH)/../src-tauri/resources/bin/
67-
cp $(BASEPATH)/config.json $(BASEPATH)/../src-tauri/resources/bin/
68-
cp $(BASEPATH)/putty.exe $(BASEPATH)/../src-tauri/resources/bin/windows/
69-
cp $(BASEPATH)/pkg/autoit/*.dll $(BASEPATH)/../src-tauri/resources/bin/windows/
66+
67+
@echo "Building Windows AMD64..."
68+
GOARCH=amd64 GOOS=windows $(CLIENTBUILD) -ldflags "$(LDFLAGS) -H windowsgui" -o $(BUILDDIR)/windows/JumpServerClient.exe $(CLIENTSRCFILE)
69+
70+
@echo "Building Windows 386..."
71+
GOARCH=386 GOOS=windows $(CLIENTBUILD) -ldflags "$(LDFLAGS) -H windowsgui" -o $(BUILDDIR)/windows/JumpServerClient32.exe $(CLIENTSRCFILE)
72+
73+
@echo "Copying platform-specific resources..."
74+
@cp -R $(BASEPATH)/Scripts $(BUILDDIR)/darwin-amd64/
75+
@cp -R $(BASEPATH)/Scripts $(BUILDDIR)/darwin-arm64/
76+
@cp $(BASEPATH)/putty.exe $(BUILDDIR)/windows/
77+
@cp $(BASEPATH)/pkg/autoit/*.dll $(BUILDDIR)/windows/
78+
79+
@echo "Copying to Tauri resources..."
80+
@mkdir -p $(BASEPATH)/../src-tauri/resources/bin/
81+
@cp -R $(BUILDDIR)/* $(BASEPATH)/../src-tauri/resources/bin/
82+
@cp $(BASEPATH)/config.json $(BASEPATH)/../src-tauri/resources/bin/
83+
84+
@echo "Build completed for all platforms!"
7085

7186
# 帮助信息
7287
.PHONY: help

0 commit comments

Comments
 (0)