name: Build & Test on: - push - pull_request env: NAME: stargazer jobs: test: strategy: matrix: os: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.os }} steps: - name: Setup Go uses: actions/setup-go@v3 with: go-version-file: 'go.mod' - name: Checkout repo uses: actions/checkout@v3 - name: Cache uses: actions/cache@v3 with: path: | ~/go/pkg/mod ~/.cache/go-build ~/Library/Caches/go-build ~\AppData\Local\go-build key: ${{ runner.os }}-go-${{ env.GOVER }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ env.GOVER }}- - name: Run tests run: go test ./... build: needs: test 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: Setup Go uses: actions/setup-go@v3 with: go-version-file: 'go.mod' - name: Checkout repo uses: actions/checkout@v3 - name: Cache uses: actions/cache@v3 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Build env: GOOS: ${{ matrix.GOOS }} GOARCH: ${{ matrix.GOARCH }} working-directory: cmd/stargazer 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