1 #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
workflow_dispatch: | |
push: | |
paths-ignore: | |
- "docs/**" | |
- "README.md" | |
- ".github/ISSUE_TEMPLATE/**" | |
branches: | |
- Alpha | |
tags: | |
- "v*" | |
pull_request_target: | |
branches: | |
- Alpha | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
jobs: | |
- { goos: darwin, goarch: arm64, output: arm64 } | |
- { goos: darwin, goarch: amd64, output: amd64 } | |
# - { goos: linux, goarch: '386', output: '386' } | |
# - { goos: linux, goarch: amd64, output: x86_64 } | |
# - { goos: linux, goarch: amd64, goamd64: v3, output: x86_64_v3 } | |
# - { goos: linux, goarch: arm64, output: arm64 } | |
# - { goos: linux, goarch: arm, goarm: '7', output: armv7 } | |
# - { goos: linux, goarch: mips, mips: hardfloat, output: mips-hardfloat } | |
# - { goos: linux, goarch: mips, mips: softfloat, output: mips-softfloat } | |
# - { goos: linux, goarch: mipsle, mips: hardfloat, output: mipsle-hardfloat } | |
# - { goos: linux, goarch: mipsle, mips: softfloat, output: mipsle-softfloat } | |
# - { goos: linux, goarch: mips64, output: mips64 } | |
# - { goos: linux, goarch: mips64le, output: mips64le } | |
# - { goos: linux, goarch: loong64, output: loong64 } | |
# - { goos: linux, goarch: riscv64, output: riscv64 } | |
# - { goos: windows, goarch: '386', output: '386' } | |
# - { goos: windows, goarch: amd64, output: x86_64 } | |
# - { goos: windows, goarch: amd64, goamd64: v3, output: x86_64_v3 } | |
# - { goos: windows, goarch: arm64, output: arm64 } | |
# - { goos: freebsd, goarch: '386', output: '386' } | |
# - { goos: freebsd, goarch: amd64, output: x86_64 } | |
# - { goos: freebsd, goarch: amd64, goamd64: v3, output: x86_64_v3 } | |
# - { goos: freebsd, goarch: arm64, output: arm64 } | |
# - { goos: android, goarch: '386', ndk: i686-linux-android34, output: '386', cgo: '1'} | |
# - { goos: android, goarch: amd64, ndk: x86_64-linux-android34, output: x86_64, cgo: '1' } | |
# - { goos: android, goarch: arm, ndk: armv7a-linux-androideabi34, output: armeabi-v7a, cgo: '1' } | |
# - { goos: android, goarch: arm64, ndk: aarch64-linux-android34, output: arm64-v8a, cgo: '1' } | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ^1.22 | |
- name: Set Time Variable | |
run: | | |
echo "VERSION=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
echo "BUILDTIME=$(date)" >> $GITHUB_ENV | |
- name: Setup NDK | |
if: ${{ matrix.jobs.goos == 'android' }} | |
uses: nttld/setup-ndk@v1 | |
id: setup-ndk | |
with: | |
ndk-version: r26c | |
- name: Set NDK path | |
if: ${{ matrix.jobs.goos == 'android' }} | |
run: | | |
echo "CC=${{steps.setup-ndk.outputs.ndk-path}}/toolchains/llvm/prebuilt/linux-x86_64/bin/${{matrix.jobs.ndk}}-clang" >> $GITHUB_ENV | |
- name: build core | |
env: | |
GOOS: ${{matrix.jobs.goos}} | |
GOARCH: ${{matrix.jobs.goarch}} | |
GOAMD64: ${{matrix.jobs.goamd64}} | |
GOARM: ${{matrix.jobs.arm}} | |
GOMIPS: ${{matrix.jobs.mips}} | |
CGO_ENABLED: ${{matrix.jobs.cgo}} | |
run: | | |
go build -v -tags "with_gvisor" -trimpath -ldflags "-X 'github.com/metacubex/mihomo/constant.Version=${VERSION}' -X 'github.com/metacubex/mihomo/constant.BuildTime=${BUILDTIME}' -w -s -buildid=" | |
if [ "${GOOS}" = "windows" ]; then | |
zip -r mihomo-${GOOS}-${{matrix.jobs.output}}-${VERSION}.zip mihomo.exe | |
else | |
tar -czvf mihomo-${GOOS}-${{matrix.jobs.output}}-${VERSION}.tar.gz mihomo | |
fi | |
- name: Archive production artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.jobs.goos }}-${{ matrix.jobs.output }} | |
path: | | |
mihomo*.tar.gz | |
mihomo*.zip | |
release: | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Download all workflow run artifacts | |
uses: actions/download-artifact@v4 | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: Release ${{ github.ref }} | |
draft: false | |
prerelease: true | |
- run: | | |
ls |