name: Build on: push: branches: - main - beta - develop pull_request: jobs: checks: name: Checks runs-on: docker steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: '1.24.x' check-latest: true - name: Run go fmt and go vet run: | go fmt $(go list ./...) go vet $(go list ./...) code-coverage: name: Code Coverage runs-on: docker steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: '1.24.x' check-latest: true - name: Run tests and generate coverage report run: | go test -covermode=count -coverprofile coverage.cov $(go list ./...) go tool cover -func=coverage.cov go tool cover -html=coverage.cov -o coverage.html - name: Upload coverage artifacts uses: https://code.forgejo.org/forgejo/upload-artifact@v4 with: name: coverage-reports path: | coverage.cov coverage.html build: name: Build runs-on: docker strategy: matrix: go: - GOOS: darwin GOARCH: amd64 - GOOS: darwin GOARCH: arm64 - GOOS: linux GOARCH: amd64 - GOOS: linux GOARCH: arm64 - GOOS: windows GOARCH: amd64 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: '1.24.x' check-latest: true - name: Set environment variables run: | echo "GOOS=${{ matrix.go.GOOS }}" >> $GITHUB_ENV echo "GOARCH=${{ matrix.go.GOARCH }}" >> $GITHUB_ENV - name: Build run: go build .