@@ -3,62 +3,87 @@ name: Build Electron
33on :
44 workflow_dispatch :
55 inputs :
6- electronBranch :
6+ builderImageTag :
77 type : string
88 required : true
9- default : " v32.2.5"
10- description : Branch of electron to build
9+ default : " electron-v32"
10+ description : Builder image tag
11+ electronVersion :
12+ type : string
13+ required : true
14+ default : " 32.2.5"
15+ description : Version of electron to build
1116
1217jobs :
13- prepare-src :
18+ prepare :
1419 runs-on : self-hosted
1520 container :
1621 image : ghcr.io/darkyzhou/electron-buildtools:latest
1722 volumes :
18- - /home/darkyzhou/data/build/electron-loong64:/home/builduser/buildroot
23+ - /home/darkyzhou/data/build/electron-loong64:/home/builduser
1924 steps :
2025 - uses : actions/checkout@v4
21- with :
22- path : repo
23- - name : Sync sources
26+ - name : Patch Sources
2427 run : |
2528 set -ex
29+ export REPO_PATH=`pwd`
2630 cd /home/builduser/buildroot
2731 if [ ! -d "src/electron" ]; then
2832 npx e init -i release -r /home/builduser/buildroot electron-loong64
29- git clone -b ${{ inputs.electronBranch }} https://github.com/electron/electron src/electron
33+ git clone https://github.com/electron/electron.git src/electron
3034 fi
3135 git -C src clean -fd || true
3236 git -C src am --abort || true
37+ git -C src/electron clean -fd
38+ git -C src/electron reset --hard HEAD
3339 git -C src/electron fetch origin --tags
34- git -C src/electron switch --detach ${{ inputs.electronBranch }}
35- git -C src/electron apply repo/electron.patch
36- npx e sync -vvvv
40+ git -C src/electron switch --detach v${{ inputs.electronVersion }}
41+ git -C src/electron apply $REPO_PATH/electron.patch
42+ - name : Sync Dependencies
43+ run : |
44+ set -ex
45+ cd /home/builduser/buildroot
46+ rm -rf src/build/linux/debian_bullseye*
47+ npx e sync
3748 build :
38- needs : prepare-src
49+ needs : prepare
3950 runs-on : self-hosted
51+ permissions :
52+ contents : read
53+ packages : write
4054 container :
41- image : ghcr.io/darkyzhou/electron-builder:latest
55+ image : ghcr.io/darkyzhou/electron-builder:${{ inputs.builderImageTag }}
4256 volumes :
43- - /home/darkyzhou/data/build/electron-loong64:/home/builduser/buildroot
57+ - /home/darkyzhou/data/build/electron-loong64:/home/builduser
4458 steps :
45- - name : Replace binaries
59+ - name : Replace Binaries
4660 run : |
4761 set -ex
48- cp /usr/local/lib/node_modules/@esbuild/linux-loong64/bin/esbuild /home/builduser/buildroot/src/third_party/devtools-frontend/src/third_party/esbuild/esbuild
4962 cp /usr/local/bin/node /home/builduser/buildroot/src/third_party/node/linux/node-linux-x64/bin/node
50- - name : Generate ninja
63+ chmod +w /home/builduser/buildroot/src/third_party/devtools-frontend/src/third_party/esbuild/esbuild
64+ cp /usr/local/lib/node_modules/@esbuild/linux-loong64/bin/esbuild /home/builduser/buildroot/src/third_party/devtools-frontend/src/third_party/esbuild/esbuild
65+ - name : Build Electron
5166 run : |
5267 set -ex
5368 cd /home/builduser/buildroot/src
5469 gn gen out/Release --args="import(\"//electron/build/args/release.gn\")" --script-executable=/usr/bin/python3
70+ ninja -C out/Release/ electron
5571 env :
5672 CC : clang
5773 CXX : clang++
5874 AR : ar
5975 NM : nm
6076 RUSTC_BOOTSTRAP : 1
61- - name : Build electron
77+ - name : Package Electron
6278 run : |
6379 set -ex
6480 cd /home/builduser/buildroot/src
81+ ninja -C out/Release/ electron:electron_dist_zip
82+ - name : Upload Artifact
83+ uses : svenstaro/upload-release-action@v2
84+ with :
85+ file : /home/builduser/buildroot/src/out/Release/dist.zip
86+ asset_name : electron-v${{ inputs.electronVersion }}-linux-loong64.zip
87+ release_name : Electron v${{ inputs.electronVersion }} port for LoongArch64
88+ overwrite : true
89+ tag : v${{ inputs.electronVersion }}
0 commit comments