name: Debug build on: push: branches: - stable-next - main-next - dev-next paths-ignore: - '**.md' - '.github/**' - '!.github/workflows/debug.yml' pull_request: branches: - stable-next - main-next - dev-next jobs: build: name: Debug build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 with: fetch-depth: 0 - name: Get latest go version id: version run: | echo go_version=$(curl -s https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json | grep -oE '"version": "[0-9]{1}.[0-9]{1,}(.[0-9]{1,})?"' | head -1 | cut -d':' -f2 | sed 's/ //g; s/"//g') >> $GITHUB_OUTPUT - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ steps.version.outputs.go_version }} - name: Add cache to Go proxy run: | version=`git rev-parse HEAD` mkdir build pushd build go mod init build go get -v github.com/sagernet/sing-box@$version popd continue-on-error: true - name: Run Test run: | go test -v ./... build_go118: name: Debug build (Go 1.18) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 with: fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v5 with: go-version: 1.18.10 - name: Cache go module uses: actions/cache@v3 with: path: | ~/go/pkg/mod key: go118-${{ hashFiles('**/go.sum') }} - name: Run Test run: make ci_build_go118 build_go120: name: Debug build (Go 1.20) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 with: fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v5 with: go-version: 1.20.7 - name: Cache go module uses: actions/cache@v3 with: path: | ~/go/pkg/mod key: go118-${{ hashFiles('**/go.sum') }} - name: Run Test run: make ci_build cross: strategy: matrix: include: # windows - name: windows-amd64 goos: windows goarch: amd64 goamd64: v1 - name: windows-amd64-v3 goos: windows goarch: amd64 goamd64: v3 - name: windows-386 goos: windows goarch: 386 - name: windows-arm64 goos: windows goarch: arm64 - name: windows-arm32v7 goos: windows goarch: arm goarm: 7 # linux - name: linux-amd64 goos: linux goarch: amd64 goamd64: v1 - name: linux-amd64-v3 goos: linux goarch: amd64 goamd64: v3 - name: linux-386 goos: linux goarch: 386 - name: linux-arm64 goos: linux goarch: arm64 - name: linux-armv5 goos: linux goarch: arm goarm: 5 - name: linux-armv6 goos: linux goarch: arm goarm: 6 - name: linux-armv7 goos: linux goarch: arm goarm: 7 - name: linux-mips-softfloat goos: linux goarch: mips gomips: softfloat - name: linux-mips-hardfloat goos: linux goarch: mips gomips: hardfloat - name: linux-mipsel-softfloat goos: linux goarch: mipsle gomips: softfloat - name: linux-mipsel-hardfloat goos: linux goarch: mipsle gomips: hardfloat - name: linux-mips64 goos: linux goarch: mips64 - name: linux-mips64el goos: linux goarch: mips64le - name: linux-s390x goos: linux goarch: s390x # darwin - name: darwin-amd64 goos: darwin goarch: amd64 goamd64: v1 - name: darwin-amd64-v3 goos: darwin goarch: amd64 goamd64: v3 - name: darwin-arm64 goos: darwin goarch: arm64 # freebsd - name: freebsd-amd64 goos: freebsd goarch: amd64 goamd64: v1 - name: freebsd-amd64-v3 goos: freebsd goarch: amd64 goamd64: v3 - name: freebsd-386 goos: freebsd goarch: 386 - name: freebsd-arm64 goos: freebsd goarch: arm64 fail-fast: false runs-on: ubuntu-latest env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} GOAMD64: ${{ matrix.goamd64 }} GOARM: ${{ matrix.goarm }} GOMIPS: ${{ matrix.gomips }} CGO_ENABLED: 0 TAGS: with_clash_api,with_quic steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 with: fetch-depth: 0 - name: Get latest go version id: version run: | echo go_version=$(curl -s https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json | grep -oE '"version": "[0-9]{1}.[0-9]{1,}(.[0-9]{1,})?"' | head -1 | cut -d':' -f2 | sed 's/ //g; s/"//g') >> $GITHUB_OUTPUT - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ steps.version.outputs.go_version }} - name: Build id: build run: make - name: Upload artifact uses: actions/upload-artifact@v4 with: name: sing-box-${{ matrix.name }} path: sing-box*