name: Release on: push: tags: - 'v*' jobs: # Gates the build, so a tag that fails here publishes no binaries. The suite # covers the API client against a stub server, the Update state machine, and # View rendering — all three are pure enough to test without a terminal. test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Vet run: go vet ./... - name: Test run: go test ./... build: needs: test runs-on: ubuntu-latest strategy: matrix: include: - goos: linux goarch: amd64 - goos: linux goarch: arm64 - goos: darwin goarch: amd64 - goos: darwin goarch: arm64 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Build env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} run: | go build \ -ldflags "-X main.version=${{ github.ref_name }}" \ -o terdut-tui-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }} \ . - uses: actions/upload-artifact@v4 with: name: terdut-tui-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }} path: terdut-tui-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }} release: needs: build runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/download-artifact@v4 with: merge-multiple: true - uses: softprops/action-gh-release@v2 with: files: 'terdut-tui-*'