mirror of
https://github.com/oneclickvirt/ecs.git
synced 2026-04-24 00:39:41 +08:00
fix: 修复编译的Action错配ARCH
This commit is contained in:
@@ -175,6 +175,7 @@ jobs:
|
||||
|
||||
- goos: linux
|
||||
goarch: arm
|
||||
goarm: 7
|
||||
cgo_enabled: "0"
|
||||
ldflags: "-s -w"
|
||||
runner: ubuntu-latest
|
||||
@@ -271,17 +272,25 @@ jobs:
|
||||
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build Binary
|
||||
env:
|
||||
CGO_ENABLED: ${{ matrix.cgo_enabled }}
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
CC: ${{ matrix.cc }}
|
||||
CGO_CFLAGS: ${{ matrix.cflags }}
|
||||
CGO_LDFLAGS: ${{ matrix.ldflags }}
|
||||
run: |
|
||||
go clean -cache -modcache -testcache
|
||||
export CGO_ENABLED=${{ matrix.cgo_enabled }}
|
||||
export GOOS=${{ matrix.goos }}
|
||||
export GOARCH=${{ matrix.goarch }}
|
||||
|
||||
# 设置额外的环境变量
|
||||
if [[ -n "${{ matrix.goarm }}" ]]; then
|
||||
export GOARM=${{ matrix.goarm }}
|
||||
fi
|
||||
if [[ -n "${{ matrix.gomips }}" ]]; then
|
||||
export GOMIPS=${{ matrix.gomips }}
|
||||
fi
|
||||
|
||||
# 针对 Darwin 的特殊处理
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" && "${{ matrix.goos }}" == "darwin" ]]; then
|
||||
if [[ "${{ matrix.goarch }}" == "amd64" ]]; then
|
||||
export CC="x86_64-apple-darwin21.4-clang"
|
||||
@@ -290,40 +299,54 @@ jobs:
|
||||
export CC="aarch64-apple-darwin21.4-clang"
|
||||
export CXX="aarch64-apple-darwin21.4-clang++"
|
||||
fi
|
||||
export CGO_CFLAGS="${{ matrix.cflags }}"
|
||||
export CGO_LDFLAGS="${{ matrix.ldflags }}"
|
||||
export OSXCROSS_ROOT="${OSXCROSS_ROOT}"
|
||||
elif [[ "${{ matrix.cgo_enabled }}" == "1" && "${{ matrix.runner }}" != "macos-latest" ]]; then
|
||||
export CC="${{ matrix.cc }}"
|
||||
export CGO_CFLAGS="${{ matrix.cflags }}"
|
||||
# 对于 Windows 的特殊处理
|
||||
if [[ "${{ matrix.goos }}" == "windows" ]]; then
|
||||
export CGO_LDFLAGS="-static-libgcc -static-libstdc++"
|
||||
fi
|
||||
fi
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" ]]; then
|
||||
|
||||
# 测试编译器(仅在启用 CGO 时)
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" && -n "$CC" ]]; then
|
||||
echo 'int main() { return 0; }' > test.c
|
||||
$CC $CGO_CFLAGS test.c -o test || exit 1
|
||||
rm -f test.c test
|
||||
fi
|
||||
|
||||
# 清理和准备
|
||||
rm -rf vendor/
|
||||
go mod download
|
||||
go mod tidy
|
||||
mkdir -p bin
|
||||
|
||||
# 设置二进制文件名
|
||||
BINARY_NAME="goecs"
|
||||
if [[ "${{ matrix.goos }}" == "windows" ]]; then
|
||||
BINARY_NAME="${BINARY_NAME}.exe"
|
||||
fi
|
||||
|
||||
# 构建 LDFLAGS
|
||||
LDFLAGS="-s -w -X main.version=${{ steps.tag.outputs.version }} -X main.arch=${{ matrix.goarch }}"
|
||||
if [[ "${{ matrix.cgo_enabled }}" == "1" ]]; then
|
||||
LDFLAGS="${LDFLAGS} -checklinkname=0 ${{ matrix.ldflags }}"
|
||||
env CGO_ENABLED=1 GOOS=$GOOS GOARCH=$GOARCH CC="$CC" CGO_CFLAGS="$CGO_CFLAGS" CGO_LDFLAGS="$CGO_LDFLAGS" \
|
||||
go build -a -o bin/$BINARY_NAME -ldflags="$LDFLAGS" -trimpath ./
|
||||
else
|
||||
LDFLAGS="${LDFLAGS} -checklinkname=0 ${{ matrix.ldflags }}"
|
||||
env CGO_ENABLED=0 GOOS=$GOOS GOARCH=$GOARCH \
|
||||
go build -o bin/$BINARY_NAME -ldflags="$LDFLAGS" -trimpath ./
|
||||
fi
|
||||
|
||||
# 执行构建
|
||||
echo "Building for GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=$CGO_ENABLED"
|
||||
go build -a -o bin/$BINARY_NAME -ldflags="$LDFLAGS" -trimpath ./
|
||||
|
||||
# 验证文件是否存在
|
||||
[[ -f "bin/$BINARY_NAME" ]] || exit 1
|
||||
|
||||
# 显示构建信息
|
||||
echo "Built binary: bin/$BINARY_NAME"
|
||||
ls -la bin/
|
||||
if command -v file >/dev/null 2>&1; then
|
||||
file bin/$BINARY_NAME
|
||||
fi
|
||||
|
||||
- name: Create ZIP archive
|
||||
run: |
|
||||
@@ -436,4 +459,4 @@ jobs:
|
||||
fi
|
||||
fi
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
GITHUB_TOKEN: ${{ secrets.GHT }}
|
||||
Reference in New Issue
Block a user