name: Build on: - push - pull_request env: GOVER: ^1.18 NAME: stargazer jobs: build: name: build runs-on: ubuntu-latest strategy: matrix: GOOS: [ windows, linux, darwin ] GOARCH: [ amd64, 386, arm, arm64 ] exclude: - GOOS: windows GOARCH: arm - GOOS: darwin GOARCH: 386 - GOOS: darwin GOARCH: arm steps: - name: Checkout repo uses: actions/checkout@v3 - name: Cache uses: actions/cache@v2 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Setup Go uses: actions/setup-go@v2 with: go-version: ${{ env.GOVER }} - name: Build env: GOOS: ${{ matrix.GOOS }} GOARCH: ${{ matrix.GOARCH }} run: go build -ldflags="-s -w" -o dist/$NAME-$GOOS-$GOARCH - name: Rename binaries (Windows) if: matrix.GOOS == 'windows' run: for x in dist/$NAME-windows-*; do mv $x $x.exe; done - name: Upload binary uses: actions/upload-artifact@v3 with: name: ${{env.NAME}}-${{ matrix.GOOS }}-${{ matrix.GOARCH }}-${{github.sha}} path: dist/* retention-days: 90