on: - push - pull_request permissions: contents: read jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} defaults: run: shell: bash steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Install Protoc run: | case "$RUNNER_OS" in Linux) archive=linux-x86_64 ;; macOS) if [[ "$(uname -m)" == "arm64" ]]; then archive=osx-aarch_64 else archive=osx-x86_64 fi ;; Windows) archive=win64 ;; esac curl -fLsS -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v28.1/protoc-28.1-$archive.zip" python -m zipfile -e "$RUNNER_TEMP/protoc.zip" "$RUNNER_TEMP/protoc" chmod +x "$RUNNER_TEMP/protoc/bin/"* echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH" "$RUNNER_TEMP/protoc/bin/protoc" --version go install google.golang.org/protobuf/cmd/protoc-gen-go - name: Test run: go test -race ./... - name: Vet run: go vet ./... - name: Build run: go build ./cmd/protodump