mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
feat(ci): build app for Windows platform
This commit is contained in:
parent
b9e825971d
commit
2d56914af1
1 changed files with 40 additions and 5 deletions
45
.github/workflows/build.yml
vendored
45
.github/workflows/build.yml
vendored
|
@ -96,7 +96,7 @@ jobs:
|
|||
needs: build_app
|
||||
strategy:
|
||||
matrix:
|
||||
goos: [ linux, darwin ]
|
||||
goos: [ linux, darwin, windows ]
|
||||
goarch: [ amd64, 386, arm64 ]
|
||||
exclude:
|
||||
# Exclude i386 on darwin.
|
||||
|
@ -150,12 +150,14 @@ jobs:
|
|||
export _ARCH=$(jq ".$GOOS[\"$GOARCH$GOARM\"].arch" -r < .github/build/build_info.json)
|
||||
export _ABI=$(jq ".$GOOS[\"$GOARCH$GOARM\"].abi // \"\"" -r < .github/build/build_info.json)
|
||||
export _ARTIFACT=nginx-ui-$GOOS-$GOARCH$(if [[ "$GOARM" ]]; then echo "v$GOARM"; fi)
|
||||
echo "GOOS: $GOOS, GOARCH: $GOARCH, GOARM: $GOARM, ABI: $_ABI, RELEASE_NAME: $_NAME, ARTIFACT_NAME: $_ARTIFACT"
|
||||
export _BINARY=nginx-ui$(if [[ "$GOOS" == "windows" ]]; then echo ".exe"; fi)
|
||||
echo "GOOS: $GOOS, GOARCH: $GOARCH, GOARM: $GOARM, ABI: $_ABI, RELEASE_NAME: $_NAME, ARTIFACT_NAME: $_ARTIFACT, BINARY_NAME: $_BINARY"
|
||||
echo "CACHE_NAME=$_NAME" >> $GITHUB_ENV
|
||||
echo "ARCH_NAME=$_ARCH" >> $GITHUB_ENV
|
||||
echo "ABI=$_ABI" >> $GITHUB_ENV
|
||||
echo "DIST=nginx-ui-$_NAME" >> $GITHUB_ENV
|
||||
echo "ARTIFACT=$_ARTIFACT" >> $GITHUB_ENV
|
||||
echo "BINARY_NAME=$_BINARY" >> $GITHUB_ENV
|
||||
|
||||
- name: Setup Go modules cache
|
||||
uses: actions/cache@v4
|
||||
|
@ -213,17 +215,50 @@ jobs:
|
|||
echo "CC=${{ env.ARCH_NAME }}-clang" >> $GITHUB_ENV
|
||||
echo "CXX=${{ env.ARCH_NAME }}-clang++" >> $GITHUB_ENV
|
||||
echo "LD_FLAGS=-w" >> $GITHUB_ENV
|
||||
|
||||
- name: Setup for Windows
|
||||
if: env.GOOS == 'windows'
|
||||
run: |
|
||||
echo "LD_FLAGS=-w" >> $GITHUB_ENV
|
||||
echo "CGO_ENABLED=1" >> $GITHUB_ENV
|
||||
|
||||
# Install cross compilers based on architecture
|
||||
sudo apt-get update
|
||||
if [[ "$GOARCH" == "amd64" ]]; then
|
||||
echo "Installing x86_64 Windows cross compiler"
|
||||
sudo apt-get install -y gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64
|
||||
echo "CC=x86_64-w64-mingw32-gcc" >> $GITHUB_ENV
|
||||
echo "CXX=x86_64-w64-mingw32-g++" >> $GITHUB_ENV
|
||||
elif [[ "$GOARCH" == "386" ]]; then
|
||||
echo "Installing i686 Windows cross compiler"
|
||||
sudo apt-get install -y gcc-mingw-w64-i686 g++-mingw-w64-i686
|
||||
echo "CC=i686-w64-mingw32-gcc" >> $GITHUB_ENV
|
||||
echo "CXX=i686-w64-mingw32-g++" >> $GITHUB_ENV
|
||||
elif [[ "$GOARCH" == "arm64" ]]; then
|
||||
echo "Installing ARM64 Windows cross compiler"
|
||||
# Ubuntu's apt repositories don't have mingw for ARM64
|
||||
# Use llvm-mingw project instead
|
||||
mkdir -p $HOME/llvm-mingw
|
||||
wget -q https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-ucrt-ubuntu-20.04-x86_64.tar.xz
|
||||
tar xf llvm-mingw-20231128-ucrt-ubuntu-20.04-x86_64.tar.xz -C $HOME/llvm-mingw --strip-components=1
|
||||
echo "PATH=$HOME/llvm-mingw/bin:$PATH" >> $GITHUB_ENV
|
||||
echo "CC=aarch64-w64-mingw32-clang" >> $GITHUB_ENV
|
||||
echo "CXX=aarch64-w64-mingw32-clang++" >> $GITHUB_ENV
|
||||
else
|
||||
echo "Unsupported Windows architecture: $GOARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir -p dist
|
||||
go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'" -o dist/nginx-ui -v main.go
|
||||
go build -tags=jsoniter -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'" -o dist/$BINARY_NAME -v main.go
|
||||
|
||||
- name: Archive backend artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.ARTIFACT }}
|
||||
path: dist/nginx-ui
|
||||
path: dist/${{ env.BINARY_NAME }}
|
||||
|
||||
- name: Prepare publish
|
||||
if: github.event_name == 'release'
|
||||
|
@ -269,7 +304,7 @@ jobs:
|
|||
path: ./dist
|
||||
|
||||
- name: Prepare Artifacts
|
||||
run: chmod +x ./dist/nginx-ui-*/nginx-ui
|
||||
run: chmod +x ./dist/nginx-ui-*/nginx-ui*
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue