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
|
needs: build_app
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
goos: [ linux, darwin ]
|
goos: [ linux, darwin, windows ]
|
||||||
goarch: [ amd64, 386, arm64 ]
|
goarch: [ amd64, 386, arm64 ]
|
||||||
exclude:
|
exclude:
|
||||||
# Exclude i386 on darwin.
|
# Exclude i386 on darwin.
|
||||||
|
@ -150,12 +150,14 @@ jobs:
|
||||||
export _ARCH=$(jq ".$GOOS[\"$GOARCH$GOARM\"].arch" -r < .github/build/build_info.json)
|
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 _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)
|
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 "CACHE_NAME=$_NAME" >> $GITHUB_ENV
|
||||||
echo "ARCH_NAME=$_ARCH" >> $GITHUB_ENV
|
echo "ARCH_NAME=$_ARCH" >> $GITHUB_ENV
|
||||||
echo "ABI=$_ABI" >> $GITHUB_ENV
|
echo "ABI=$_ABI" >> $GITHUB_ENV
|
||||||
echo "DIST=nginx-ui-$_NAME" >> $GITHUB_ENV
|
echo "DIST=nginx-ui-$_NAME" >> $GITHUB_ENV
|
||||||
echo "ARTIFACT=$_ARTIFACT" >> $GITHUB_ENV
|
echo "ARTIFACT=$_ARTIFACT" >> $GITHUB_ENV
|
||||||
|
echo "BINARY_NAME=$_BINARY" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Setup Go modules cache
|
- name: Setup Go modules cache
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
|
@ -213,17 +215,50 @@ jobs:
|
||||||
echo "CC=${{ env.ARCH_NAME }}-clang" >> $GITHUB_ENV
|
echo "CC=${{ env.ARCH_NAME }}-clang" >> $GITHUB_ENV
|
||||||
echo "CXX=${{ env.ARCH_NAME }}-clang++" >> $GITHUB_ENV
|
echo "CXX=${{ env.ARCH_NAME }}-clang++" >> $GITHUB_ENV
|
||||||
echo "LD_FLAGS=-w" >> $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
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
mkdir -p dist
|
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
|
- name: Archive backend artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ env.ARTIFACT }}
|
name: ${{ env.ARTIFACT }}
|
||||||
path: dist/nginx-ui
|
path: dist/${{ env.BINARY_NAME }}
|
||||||
|
|
||||||
- name: Prepare publish
|
- name: Prepare publish
|
||||||
if: github.event_name == 'release'
|
if: github.event_name == 'release'
|
||||||
|
@ -269,7 +304,7 @@ jobs:
|
||||||
path: ./dist
|
path: ./dist
|
||||||
|
|
||||||
- name: Prepare Artifacts
|
- name: Prepare Artifacts
|
||||||
run: chmod +x ./dist/nginx-ui-*/nginx-ui
|
run: chmod +x ./dist/nginx-ui-*/nginx-ui*
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue