name: Build zurg-testing executable binary on: push: branches: - main tags: - v0* - latest jobs: build: name: Build runs-on: ubuntu-latest strategy: matrix: goos: [windows, darwin, linux] goarch: [386, amd64, arm, arm64] # This list can be expanded based on your requirements exclude: - goos: darwin goarch: 386 - goos: darwin goarch: arm steps: - name: Check out code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: go-version: 'stable' # Adjust according to your Go version - name: Build run: | CGO_ENABLED=0 GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -ldflags="-s -w" -o zurg-v${GITHUB_REF#refs/tags/}-${{ matrix.goos }}-${{ matrix.goarch }} cmd/zurg/main.go # Install and use UPX to compress the binary, but exclude windows/amd64 - name: Install and Compress with UPX if: (matrix.goos != 'windows' && matrix.goarch != 'arm') || (matrix.goos != 'windows' && matrix.goarch != 'arm64') run: | sudo apt-get update sudo apt-get install -y upx-ucl upx --best zurg-v${GITHUB_REF#refs/tags/}-${{ matrix.goos }}-${{ matrix.goarch }} # Zip the binary - name: Zip Binary run: | zip zurg-v${GITHUB_REF#refs/tags/}-${{ matrix.goos }}-${{ matrix.goarch }}.zip zurg-v${GITHUB_REF#refs/tags/}-${{ matrix.goos }}-${{ matrix.goarch }} - name: Upload Artifacts uses: actions/upload-artifact@v3 with: name: zurg-v${GITHUB_REF#refs/tags/}-${{ matrix.goos }}-${{ matrix.goarch }}.zip path: | zurg-v${GITHUB_REF#refs/tags/}-${{ matrix.goos }}-${{ matrix.goarch }}.zip