diff --git a/.github/workflows/control-operator.yml b/.github/workflows/control-operator.yml new file mode 100644 index 000000000..de76438ad --- /dev/null +++ b/.github/workflows/control-operator.yml @@ -0,0 +1,31 @@ +name: AliECS Control Operator + +on: + pull_request: + push: + branches: + - 'master' + +jobs: + control-operator-basic-check: + name: Basic Make Check + runs-on: ${{ matrix.os }} + defaults: + run: + working-directory: control-operator + strategy: + fail-fast: false + matrix: + os: [macOS-latest, ubuntu-24.04] + go: [ '1.26.5' ] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: ${{matrix.go}} + - uses: arduino/setup-protoc@v3 + with: + version: '35.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} + - run: make + - run: make test diff --git a/control-operator/Makefile b/control-operator/Makefile index 992fe1162..b0a1cb07e 100644 --- a/control-operator/Makefile +++ b/control-operator/Makefile @@ -127,9 +127,9 @@ test: manifests generate fmt vet envtest ## Run tests. ##@ Protobuf .PHONY: generate-proto -generate-proto: ## Generate protobuf and gRPC Go files from occ.proto. +generate-proto: protoc-gen-go protoc-gen-go-grpc ## Generate protobuf and gRPC Go files from occ.proto. mkdir -p internal/controller/protos/generated - protoc --go_out=internal/controller/protos/generated --go_opt=paths=source_relative --go-grpc_out=internal/controller/protos/generated --go-grpc_opt=paths=source_relative -I internal/controller/protos internal/controller/protos/occ.proto + PATH="$(LOCALBIN):$$PATH" protoc --go_out=internal/controller/protos/generated --go_opt=paths=source_relative --go-grpc_out=internal/controller/protos/generated --go-grpc_opt=paths=source_relative -I internal/controller/protos internal/controller/protos/occ.proto .PHONY: clean-proto clean-proto: ## Remove generated protobuf and gRPC Go files. @@ -242,10 +242,14 @@ KUBECTL ?= kubectl KUSTOMIZE ?= $(LOCALBIN)/kustomize CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen ENVTEST ?= $(LOCALBIN)/setup-envtest +PROTOC_GEN_GO ?= $(LOCALBIN)/protoc-gen-go +PROTOC_GEN_GO_GRPC ?= $(LOCALBIN)/protoc-gen-go-grpc ## Tool Versions KUSTOMIZE_VERSION ?= v5.0.1 CONTROLLER_TOOLS_VERSION ?= v0.16.5 +PROTOC_GEN_GO_VERSION ?= v1.36.11 +PROTOC_GEN_GO_GRPC_VERSION ?= v1.6.2 .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading. @@ -267,6 +271,18 @@ envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest +.PHONY: protoc-gen-go +protoc-gen-go: $(PROTOC_GEN_GO) ## Download protoc-gen-go locally if necessary. If wrong version is installed, it will be overwritten. +$(PROTOC_GEN_GO): $(LOCALBIN) + test -s $(LOCALBIN)/protoc-gen-go && $(LOCALBIN)/protoc-gen-go --version | grep -q $(PROTOC_GEN_GO_VERSION) || \ + GOBIN=$(LOCALBIN) go install google.golang.org/protobuf/cmd/protoc-gen-go@$(PROTOC_GEN_GO_VERSION) + +.PHONY: protoc-gen-go-grpc +protoc-gen-go-grpc: $(PROTOC_GEN_GO_GRPC) ## Download protoc-gen-go-grpc locally if necessary. If wrong version is installed, it will be overwritten. +$(PROTOC_GEN_GO_GRPC): $(LOCALBIN) + test -s $(LOCALBIN)/protoc-gen-go-grpc && $(LOCALBIN)/protoc-gen-go-grpc --version | grep -q $(subst v,,$(PROTOC_GEN_GO_GRPC_VERSION)) || \ + GOBIN=$(LOCALBIN) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@$(PROTOC_GEN_GO_GRPC_VERSION) + .PHONY: operator-sdk OPERATOR_SDK ?= $(LOCALBIN)/operator-sdk operator-sdk: ## Download operator-sdk locally if necessary.