This is an automated email from the ASF dual-hosted git repository. wilfred-s pushed a commit to branch branch-1.9 in repository https://gitbox.apache.org/repos/asf/yunikorn-k8shim.git
commit 76c44eb106c4b11d84e97ab4974cacb1bf026b97 Author: Wilfred Spiegelenburg <[email protected]> AuthorDate: Fri Jun 19 11:43:57 2026 +1000 [YUNIKORN-3194] Update PR template to ask about AI contribution (#1042) Update PR template: * ask about AI contribution * Update Jira area * Check for testing performed (new make target to simplify task) Cleanup of Makefile Closes: #1042 Signed-off-by: Wilfred Spiegelenburg <[email protected]> (cherry picked from commit e97f30f0f3b48ffe28591b861630246572da3055) --- .github/PULL_REQUEST_TEMPLATE | 51 +++++++++++++++++++++++--------------- Makefile | 57 +++++++++++++------------------------------ 2 files changed, 48 insertions(+), 60 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE index 0d56d005..6d7a63cc 100644 --- a/.github/PULL_REQUEST_TEMPLATE +++ b/.github/PULL_REQUEST_TEMPLATE @@ -1,28 +1,39 @@ -### What is this PR for? -A few sentences describing the overall goals of the pull request's commits. -First time? Check out the contributing guide - http://yunikorn.apache.org/community/how_to_contribute +### Description +Short description of this pull request, can be as simple as the commit message used. +First time contributing? Check out the contributing guide: https://yunikorn.apache.org/community/how_to_contribute -### What type of PR is it? -* [ ] - Bug Fix -* [ ] - Improvement -* [ ] - Feature -* [ ] - Documentation -* [ ] - Hot Fix -* [ ] - Refactoring +### Type of change +Please delete options that are not relevant. -### Todos -* [ ] - Task +- [ ] Bug Fix +- [ ] Improvement +- [ ] Feature +- [ ] Refactoring +- [ ] Documentation -### What is the Jira issue? -* Open an issue on Jira https://issues.apache.org/jira/browse/YUNIKORN/ -* Put link here, and add [YUNIKORN-*Jira number*] in PR title, eg. `[YUNIKORN-2] Gang scheduling interface parameters` +### Jira issue +Jira ID : https://issues.apache.org/jira/browse/YUNIKORN-XXXXX -### How should this be tested? +- [ ] I have created a Jira issue for this pull request. +- [ ] The Jira ID is part of the title of this pull request. -### Screenshots (if appropriate) +### AI Tooling +If an AI tool was used: +- [ ] The PR includes the phrase "Generated by \<tool>", where \<tool> is the name of the AI tool used. +- [ ] My use of AI contributions follows the ASF legal policy. + +Check https://www.apache.org/legal/generative-tooling.html for details. + +### How has this been tested? +- [ ] New unit tests were added to cover new or changed code paths. +- [ ] `make test_all` was run, and no failures reported. +- [ ] `make e2e_test` was run, and no failures reported. +- [ ] new e2e tests have been added. ### Questions: -* [ ] - The licenses files need update. -* [ ] - There is breaking changes for older versions. -* [ ] - It needs documentation. +- [ ] The change needs documentation, a pull request for apache/yunikorn-site repository will be created. +- [ ] There is breaking changes for older versions: jira is tagged with `release-notes` label. +- [ ] The licenses files needs to be updated. + +### Screenshots or other details diff --git a/Makefile b/Makefile index 22c4abff..c809f199 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,19 @@ # See the License for the specific language governing permissions and # limitations under the License. +.PHONY: tools +# production build targets +.PHONY: scheduler admission scheduler_instrumented +.PHONY: image sched_image adm_image sched_image_instrumented webtest_image go-license-generate +# local run targets +.PHONY: run build build_web_test_server_prod build_web_test_server_dev +# test targets +.PHONY: test_all test bench fsm_graph clean distclean arch +.PHONY: lint check_scripts license-check go-license-check pseudo +# e2e test targets +.PHONY: print_kubectl_version print_kind_version print_helm_version +.PHONY: e2e_test kind-e2e start-cluster stop-cluster + # Go compiler selection ifeq ($(GO),) GO := go @@ -160,8 +173,8 @@ export PATH := $(BASE_DIR)/$(SHELLCHECK_PATH):$(PATH) GOLANGCI_LINT_VERSION=2.10.1 GOLANGCI_LINT_PATH=$(TOOLS_DIR)/golangci-lint-v$(GOLANGCI_LINT_VERSION) GOLANGCI_LINT_BIN=$(GOLANGCI_LINT_PATH)/golangci-lint -GOLANGCI_LINT_ARCHIVE=golangci-lint-$(GOLANGCI_LINT_VERSION)-$(OS)-$(EXEC_ARCH).tar.gz GOLANGCI_LINT_ARCHIVEBASE=golangci-lint-$(GOLANGCI_LINT_VERSION)-$(OS)-$(EXEC_ARCH) +GOLANGCI_LINT_ARCHIVE=$(GOLANGCI_LINT_ARCHIVEBASE).tar.gz export PATH := $(BASE_DIR)/$(GOLANGCI_LINT_PATH):$(PATH) # kubectl @@ -186,7 +199,7 @@ export PATH := $(BASE_DIR)/$(HELM_PATH):$(PATH) # spark export SPARK_VERSION=3.5.5-java17 -# sometimes the image is not avaiable with $SPARK_VERSION, the minor version must match +# sometimes the image is not available with $SPARK_VERSION, the minor version must match export SPARK_PYTHON_VERSION=3.4.0 export SPARK_IMAGE=apache/spark:$(SPARK_VERSION) export SPARK_PYTHON_IMAGE=docker.io/apache/spark-py:v$(SPARK_PYTHON_VERSION) @@ -237,19 +250,17 @@ SCHEDULER_INSTRUMENTED_TAG := $(SCHEDULER_TAG)-instrumented all: $(MAKE) -C $(dir $(BASE_DIR)) build +test_all: lint check_scripts license-check go-license-check pseudo test + # Print tools version -.PHONY: print_kubectl_version print_kubectl_version: @echo $(KUBECTL_VERSION) -.PHONY: print_kind_version print_kind_version: @echo $(KIND_VERSION) -.PHONY: print_helm_version print_helm_version: @echo $(HELM_VERSION) # Install tools -.PHONY: tools tools: $(SHELLCHECK_BIN) $(GOLANGCI_LINT_BIN) $(KUBECTL_BIN) $(KIND_BIN) $(HELM_BIN) $(GO_LICENSES_BIN) $(GINKGO_BIN) # Install shellcheck @@ -300,27 +311,18 @@ $(GINKGO_BIN): @mkdir -p "$(GINKGO_PATH)" @GOBIN="$(BASE_DIR)/$(GINKGO_PATH)" "$(GO)" install "github.com/onsi/ginkgo/v2/ginkgo@$(GINKGO_VERSION)" -# Format the code -.PHONY: format -format: - @echo "running go fmt" - @"$(GO)" fmt ./... - # Run lint against the previous commit for PR and branch build # In dev setup look at all changes on top of master -.PHONY: lint lint: $(GOLANGCI_LINT_BIN) @echo "running golangci-lint" @"${GOLANGCI_LINT_BIN}" run # Check scripts -.PHONY: check_scripts ALLSCRIPTS := $(shell find . -not \( -path ./spark -prune \) -not \( -path ./tools -prune \) -not \( -path ./build -prune \) -name '*.sh') check_scripts: $(SHELLCHECK_BIN) @echo "running shellcheck" @"$(SHELLCHECK_BIN)" ${ALLSCRIPTS} -.PHONY: license-check # This is a bit convoluted but using a recursive grep on linux fails to write anything when run # from the Makefile. That caused the pull-request license check run from the github action to # always pass. The syntax for find is slightly different too but that at least works in a similar @@ -340,14 +342,12 @@ endif @echo " all OK" # Check licenses of go dependencies -.PHONY: go-license-check go-license-check: $(GO_LICENSES_BIN) @echo "Checking third-party licenses" @"$(GO_LICENSES_BIN)" check ./pkg/... ./test/... --include_tests --disallowed_types=forbidden,permissive,reciprocal,restricted,unknown @echo "License checks OK" # Generate third-party dependency licenses -.PHONY: go-license-generate go-license-generate: $(OUTPUT)/third-party-licenses.md $(OUTPUT)/third-party-licenses.md: $(GO_LICENSES_BIN) go.mod go.sum @@ -364,7 +364,6 @@ $(OUTPUT)/third-party-licenses.md: $(GO_LICENSES_BIN) go.mod go.sum @mv "$(OUTPUT)/third-party-licenses.md.tmp" "$(OUTPUT)/third-party-licenses.md" # Check that we use pseudo versions in master -.PHONY: pseudo BRANCH := $(shell git branch --show-current) CORE_REF := $(shell "$(GO)" list -m -f '{{ .Version }}' github.com/apache/yunikorn-core) CORE_MATCH := $(shell expr "${CORE_REF}" : "v0.0.0-") @@ -382,14 +381,12 @@ pseudo: fi @echo " all OK" -.PHONY: run run: build @echo "running scheduler locally" cd ${DEV_BIN_DIR} && \ KUBECONFIG="$(KUBECONFIG)" ./${SCHEDULER_BINARY} # Build scheduler binary for dev and test -.PHONY: build build: $(DEV_BIN_DIR)/$(SCHEDULER_BINARY) $(DEV_BIN_DIR)/$(SCHEDULER_BINARY): go.mod go.sum $(shell find pkg) @@ -402,7 +399,6 @@ $(DEV_BIN_DIR)/$(SCHEDULER_BINARY): go.mod go.sum $(shell find pkg) ./pkg/cmd/shim/ # Build scheduler binary in a production ready version -.PHONY: scheduler scheduler: $(RELEASE_BIN_DIR)/$(SCHEDULER_BINARY) $(RELEASE_BIN_DIR)/$(SCHEDULER_BINARY): go.mod go.sum $(shell find pkg) @@ -427,7 +423,6 @@ else ./pkg/cmd/shim/ endif -.PHONY: scheduler_instrumented scheduler_instrumented: $(COVERAGE_DIR)/$(SCHEDULER_BINARY) $(COVERAGE_DIR)/$(SCHEDULER_BINARY): go.mod go.sum $(shell find pkg) @@ -442,7 +437,6 @@ $(COVERAGE_DIR)/$(SCHEDULER_BINARY): go.mod go.sum $(shell find pkg) ./pkg/cmd/shim/ # Build a scheduler image based on the production ready version -.PHONY: sched_image sched_image: $(OUTPUT)/third-party-licenses.md scheduler docker/scheduler @echo "building scheduler docker image" @rm -rf "$(DOCKER_DIR)/scheduler" @@ -470,7 +464,6 @@ sched_image: $(OUTPUT)/third-party-licenses.md scheduler docker/scheduler --label "org.opencontainers.image.documentation=${DOCS_URL}" \ ${QUIET} -.PHONY: sched_image_instrumented sched_image_instrumented: $(OUTPUT)/third-party-licenses.md scheduler_instrumented docker/scheduler @echo "building instrumented scheduler docker image" @rm -rf "$(DOCKER_DIR)/scheduler" @@ -499,7 +492,6 @@ sched_image_instrumented: $(OUTPUT)/third-party-licenses.md scheduler_instrument ${QUIET} # Build admission controller binary in a production ready version -.PHONY: admission admission: $(RELEASE_BIN_DIR)/$(ADMISSION_CONTROLLER_BINARY) $(RELEASE_BIN_DIR)/$(ADMISSION_CONTROLLER_BINARY): go.mod go.sum $(shell find pkg) @@ -525,7 +517,6 @@ else endif # Build an admission controller image based on the production ready version -.PHONY: adm_image adm_image: $(OUTPUT)/third-party-licenses.md admission docker/admission @echo "building admission controller docker image" @rm -rf "$(DOCKER_DIR)/admission" @@ -554,11 +545,9 @@ adm_image: $(OUTPUT)/third-party-licenses.md admission docker/admission ${QUIET} # Build all images based on the production ready version -.PHONY: image image: sched_image adm_image # Build a web server image ONLY to be used in e2e tests -.PHONY: webtest_image webtest_image: $(OUTPUT)/third-party-licenses.md build_web_test_server_prod docker/webtest @echo "building web server image for automated e2e tests" @rm -rf "$(DOCKER_DIR)/webtest" @@ -572,7 +561,6 @@ webtest_image: $(OUTPUT)/third-party-licenses.md build_web_test_server_prod dock --label "yunikorn-e2e-web-image" \ ${QUIET} -.PHONY: build_web_test_server_dev build_web_test_server_dev: $(DEV_BIN_DIR)/$(TEST_SERVER_BINARY) $(DEV_BIN_DIR)/$(TEST_SERVER_BINARY): go.mod go.sum $(shell find pkg) @@ -583,7 +571,6 @@ $(DEV_BIN_DIR)/$(TEST_SERVER_BINARY): go.mod go.sum $(shell find pkg) -ldflags '-buildid= -X main.version=${VERSION} -X main.date=${DATE} -X main.goVersion=${GO_VERSION} -X main.arch=${EXEC_ARCH}' \ ./pkg/cmd/webtest/ -.PHONY: build_web_test_server_prod build_web_test_server_prod: $(RELEASE_BIN_DIR)/$(TEST_SERVER_BINARY) $(RELEASE_BIN_DIR)/$(TEST_SERVER_BINARY): go.mod go.sum $(shell find pkg) @@ -596,7 +583,6 @@ $(RELEASE_BIN_DIR)/$(TEST_SERVER_BINARY): go.mod go.sum $(shell find pkg) ./pkg/cmd/webtest/ # Run the tests after building -.PHONY: test test: export DEADLOCK_DETECTION_ENABLED = true test: export DEADLOCK_TIMEOUT_SECONDS = 10 test: export DEADLOCK_EXIT = true @@ -608,14 +594,12 @@ test: "$(GO)" vet "$(REPO)"... # Run benchmarks -.PHONY: bench bench: @echo "running benchmarks" "$(GO)" clean -testcache "$(GO)" test -v -run '^Benchmark' -bench . ./pkg/... # Generate FSM graphs (dot/png) -.PHONY: fsm_graph fsm_graph: @echo "generating FSM graphs" "$(GO)" clean -testcache @@ -623,7 +607,6 @@ fsm_graph: scripts/generate-fsm-graph-images.sh # Remove generated build artifacts -.PHONY: clean clean: @echo "cleaning up caches and output" @"$(GO)" clean -cache -testcache -r @@ -631,37 +614,31 @@ clean: @rm -rf "${OUTPUT}" # Remove all generated content -.PHONY: distclean distclean: clean @echo "removing tools" @rm -rf "${TOOLS_DIR}" # Print arch variables -.PHONY: arch arch: @echo DOCKER_ARCH=$(DOCKER_ARCH) @echo EXEC_ARCH=$(EXEC_ARCH) # Start dev cluster -.PHONY: start-cluster start-cluster: $(KIND_BIN) @"$(KIND_BIN)" delete cluster --name="$(CLUSTER_NAME)" || : @./scripts/run-e2e-tests.sh -a install -n "$(CLUSTER_NAME)" -v "kindest/node:$(K8S_VERSION)" # Stop dev cluster -.PHONY: stop-cluster stop-cluster: $(KIND_BIN) @"$(KIND_BIN)" delete cluster --name="$(CLUSTER_NAME)" # Start dev cluster, run e2e tests, stop dev cluster -.PHONY: kind-e2e kind-e2e: $(KIND_BIN) @"$(KIND_BIN)" delete cluster --name="$(CLUSTER_NAME)" || : ; \ ./scripts/run-e2e-tests.sh -a test -n "$(CLUSTER_NAME)" -v "kindest/node:$(K8S_VERSION)" ; STATUS=$$? ; \ "$(KIND_BIN)" delete cluster --name="$(CLUSTER_NAME)" || : ; exit $$STATUS # Run the e2e tests, this assumes yunikorn is running under yunikorn namespace -.PHONY: e2e_test e2e_test: tools @echo "running e2e tests" cd ./test/e2e && \ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
