build: parallelise linux builds slightly (#10666)
They currently take like 25 minutes. This reduces that to approximately a third, wall-clock wise. Signed-off-by: Jakob Borg <jakob@kastelo.net>
This commit is contained in:
@@ -284,10 +284,37 @@ jobs:
|
|||||||
#
|
#
|
||||||
|
|
||||||
package-linux:
|
package-linux:
|
||||||
name: Package for Linux
|
name: Package for Linux (${{ matrix.group }})
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
needs:
|
||||||
- facts
|
- facts
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
# split the build into three groups with roughtly the same amount of
|
||||||
|
# work, in order to reduce wall clock time
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- group: common
|
||||||
|
targets: |
|
||||||
|
amd64 zig cc -target x86_64-linux-musl
|
||||||
|
386 zig cc -target x86-linux-musl
|
||||||
|
arm zig cc -target arm-linux-musleabi -mcpu=arm1136j_s
|
||||||
|
arm64 zig cc -target aarch64-linux-musl
|
||||||
|
extra-packages: ""
|
||||||
|
- group: mips
|
||||||
|
targets: |
|
||||||
|
mips zig cc -target mips-linux-musleabi
|
||||||
|
mipsle zig cc -target mipsel-linux-musleabi
|
||||||
|
mips64 mips64-linux-gnuabi64-gcc
|
||||||
|
mips64le mips64el-linux-gnuabi64-gcc
|
||||||
|
extra-packages: "gcc-mips64-linux-gnuabi64 gcc-mips64el-linux-gnuabi64"
|
||||||
|
- group: other
|
||||||
|
targets: |
|
||||||
|
riscv64 zig cc -target riscv64-linux-musl
|
||||||
|
s390x zig cc -target s390x-linux-musl
|
||||||
|
loong64 zig cc -target loongarch64-linux-musl
|
||||||
|
ppc64le zig cc -target powerpc64le-linux-musl
|
||||||
|
extra-packages: ""
|
||||||
env:
|
env:
|
||||||
VERSION: ${{ needs.facts.outputs.version }}
|
VERSION: ${{ needs.facts.outputs.version }}
|
||||||
RELEASE_KIND: ${{ needs.facts.outputs.release-kind }}
|
RELEASE_KIND: ${{ needs.facts.outputs.release-kind }}
|
||||||
@@ -306,34 +333,29 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
~/.cache/go-build
|
~/.cache/go-build
|
||||||
~/go/pkg/mod
|
~/go/pkg/mod
|
||||||
key: ${{ runner.os }}-go-${{ needs.facts.outputs.go-version }}-package-${{ hashFiles('go.sum') }}
|
key: ${{ runner.os }}-go-${{ needs.facts.outputs.go-version }}-package-linux-${{ matrix.group }}-${{ hashFiles('go.sum') }}
|
||||||
|
|
||||||
|
- name: Install extra packages
|
||||||
|
if: matrix.extra-packages != ''
|
||||||
|
run: sudo apt-get install -y ${{ matrix.extra-packages }}
|
||||||
|
|
||||||
- name: Create packages
|
- name: Create packages
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get install -y gcc-mips64-linux-gnuabi64 gcc-mips64el-linux-gnuabi64
|
echo "$TARGETS" | while read -r arch cc; do
|
||||||
for tgt in syncthing stdiscosrv strelaysrv ; do
|
[ -z "$arch" ] && continue
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch amd64 -cc "zig cc -target x86_64-linux-musl" tar "$tgt"
|
for tgt in syncthing stdiscosrv strelaysrv ; do
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch 386 -cc "zig cc -target x86-linux-musl" tar "$tgt"
|
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch "$arch" -cc "$cc" tar "$tgt"
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch arm -cc "zig cc -target arm-linux-musleabi -mcpu=arm1136j_s" tar "$tgt"
|
done
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch arm64 -cc "zig cc -target aarch64-linux-musl" tar "$tgt"
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch mips -cc "zig cc -target mips-linux-musleabi" tar "$tgt"
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch mipsle -cc "zig cc -target mipsel-linux-musleabi" tar "$tgt"
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch mips64 -cc mips64-linux-gnuabi64-gcc tar "$tgt"
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch mips64le -cc mips64el-linux-gnuabi64-gcc tar "$tgt"
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch riscv64 -cc "zig cc -target riscv64-linux-musl" tar "$tgt"
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch s390x -cc "zig cc -target s390x-linux-musl" tar "$tgt"
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch loong64 -cc "zig cc -target loongarch64-linux-musl" tar "$tgt"
|
|
||||||
# go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch ppc64 -cc "zig cc -target powerpc64-linux-musl" tar "$tgt" # fails with linkmode not supported
|
|
||||||
go run build.go -tags "${{env.TAGS_LINUX}}" -goos linux -goarch ppc64le -cc "zig cc -target powerpc64le-linux-musl" tar "$tgt"
|
|
||||||
done
|
done
|
||||||
env:
|
env:
|
||||||
CGO_ENABLED: "1"
|
CGO_ENABLED: "1"
|
||||||
EXTRA_LDFLAGS: "-linkmode=external -extldflags=-static"
|
EXTRA_LDFLAGS: "-linkmode=external -extldflags=-static"
|
||||||
|
TARGETS: ${{ matrix.targets }}
|
||||||
|
|
||||||
- name: Archive artifacts
|
- name: Archive artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: packages-linux
|
name: packages-linux-${{ matrix.group }}
|
||||||
path: |
|
path: |
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
compat.json
|
compat.json
|
||||||
|
|||||||
Reference in New Issue
Block a user