name: "go: build binary" on: push: branches: [ master ] pull_request: branches: [ master ] concurrency: group: ${{ github.head_ref }}/go cancel-in-progress: true permissions: contents: read jobs: vet: name: Go Vet runs-on: ubuntu-latest steps: - name: Check out code into the Go module directory uses: actions/checkout@v6 - name: Set up Go uses: actions/setup-go@v6 with: go-version-file: 'go.mod' - name: Get dependencies run: | cd weed; go get -v -t -d ./... - name: Go Vet (excluding protobuf lock copying) run: | cd weed # Run go vet and filter out known protobuf MessageState lock copying warnings # These are expected in generated protobuf code with embedded sync.Mutex and are safe in practice go vet -v ./... 2>&1 | grep -v "MessageState contains sync.Mutex" | grep -v "IdentityAccessManagement contains sync.RWMutex" | tee vet-output.txt # Fail only if there are actual vet errors (not counting the filtered lock warnings) if grep -q "vet:" vet-output.txt; then exit 1; fi build: name: Build runs-on: ubuntu-latest steps: - name: Check out code into the Go module directory uses: actions/checkout@v6 - name: Set up Go uses: actions/setup-go@v6 with: go-version-file: 'go.mod' - name: Build run: cd weed; go build -tags "elastic gocdk sqlite ydb tarantool tikv rclone" -v . test: name: Test runs-on: ubuntu-latest steps: - name: Check out code into the Go module directory uses: actions/checkout@v6 - name: Set up Go uses: actions/setup-go@v6 with: go-version-file: 'go.mod' - name: Test run: cd weed; go test -tags "elastic gocdk sqlite ydb tarantool tikv rclone" -v ./...