Skip to content

Commit b06d33b

Browse files
ci(release): add cross-platform matrix workflow
- Implemented GitHub Actions workflow for automated cross-platform builds. - Configured build matrix for Windows, Ubuntu (Linux), and macOS. - Automated release creation and asset uploading upon tagging 'v*'. - Ensures clean builds using native runners for each OS (solving CGO issues).
1 parent ec34536 commit b06d33b

1 file changed

Lines changed: 49 additions & 8 deletions

File tree

.github/workflows/release.yml

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Release Builder
1+
name: Cross-Platform Release
22

33
on:
44
push:
@@ -9,9 +9,35 @@ permissions:
99
contents: write
1010

1111
jobs:
12-
build-and-release:
13-
name: Build for Windows
14-
runs-on: windows-latest
12+
release:
13+
name: Build and Release
14+
# استخدام نسخة 20.04 لحل مشكلة مكتبات اللينكس المفقودة
15+
runs-on: ${{ matrix.os }}
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
include:
20+
- os: windows-latest
21+
goos: windows
22+
goarch: amd64
23+
output_name: PureLink-Windows-amd64.exe
24+
setup_cmd: go install github.com/tc-hib/go-winres@latest && go-winres make
25+
build_flags: -ldflags "-s -w -H=windowsgui"
26+
27+
- os: ubuntu-20.04 # العودة للنسخة 20.04 لأنها تدعم libappindicator3-dev
28+
goos: linux
29+
goarch: amd64
30+
output_name: PureLink-Linux-amd64
31+
setup_cmd: sudo apt-get update && sudo apt-get install -y gcc pkg-config libgtk-3-dev libappindicator3-dev
32+
build_flags: -ldflags "-s -w"
33+
34+
- os: macos-latest
35+
goos: darwin
36+
goarch: amd64
37+
output_name: PureLink-macOS-amd64
38+
setup_cmd: echo "No extra setup for macOS"
39+
build_flags: -ldflags "-s -w"
40+
1541
steps:
1642
- name: Checkout Code
1743
uses: actions/checkout@v4
@@ -24,12 +50,27 @@ jobs:
2450
- name: Install Dependencies
2551
run: go mod tidy
2652

53+
- name: Setup OS Dependencies
54+
shell: bash
55+
run: ${{ matrix.setup_cmd }}
56+
2757
- name: Build Binary
58+
shell: bash
2859
run: |
29-
go build -ldflags "-s -w -H=windowsgui" -o "PureLink-${{ github.ref_name }}-Windows.exe"
60+
VERSION=${{ github.ref_name }}
61+
OUTPUT_FILE="PureLink-${VERSION}-${{ matrix.goos }}-${{ matrix.goarch }}"
62+
63+
if [ "${{ matrix.goos }}" == "windows" ]; then
64+
OUTPUT_FILE="${OUTPUT_FILE}.exe"
65+
fi
66+
67+
echo "Building ${OUTPUT_FILE}..."
68+
# تفعيل CGO للينكس عشان الجرافيك
69+
CGO_ENABLED=1 go build ${{ matrix.build_flags }} -o "${OUTPUT_FILE}"
3070
31-
- name: Create Release
32-
uses: softprops/action-gh-release@v1
71+
- name: Upload to Release
72+
uses: softprops/action-gh-release@v2
73+
if: startsWith(github.ref, 'refs/tags/')
3374
with:
34-
files: PureLink-*-Windows.exe
75+
files: PureLink-*
3576
generate_release_notes: true

0 commit comments

Comments
 (0)