diff --git a/.github/workflows/ca-test.yaml b/.github/workflows/ca-test.yaml new file mode 100644 index 000000000000..65c7a4edd16a --- /dev/null +++ b/.github/workflows/ca-test.yaml @@ -0,0 +1,42 @@ +name: Cluster Autoscaler + +on: + push: + paths: + - 'cluster-autoscaler/**' + pull_request: + paths: + - 'cluster-autoscaler/**' + +env: + GOPATH: ${{ github.workspace }}/go + +permissions: + contents: read + checks: write + +jobs: + test: + name: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4.2.2 + with: + path: ${{ env.GOPATH }}/src/k8s.io/autoscaler + + - name: Set up Go + uses: actions/setup-go@v5.5.0 + with: + go-version: '1.24.0' + cache-dependency-path: | + ${{ env.GOPATH}}/src/k8s.io/autoscaler/cluster-autoscaler/go.sum + + - name: Apt-get + run: sudo apt-get install libseccomp-dev -qq + + - name: Test + working-directory: ${{ env.GOPATH }}/src/k8s.io/autoscaler + run: hack/for-go-proj.sh cluster-autoscaler + env: + GO111MODULE: auto + PROJECT_NAMES: "" diff --git a/.github/workflows/ci.yaml b/.github/workflows/verify.yaml similarity index 71% rename from .github/workflows/ci.yaml rename to .github/workflows/verify.yaml index fb3c9b0bd707..ce0991cb5b80 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/verify.yaml @@ -1,4 +1,4 @@ -name: Tests +name: Verify Go on: - push @@ -12,7 +12,8 @@ permissions: checks: write jobs: - test-and-verify: + verify: + name: verify runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.2.2 @@ -42,15 +43,3 @@ jobs: run: hack/verify-all.sh -v env: GO111MODULE: auto - - - name: golangci-lint - vertical-pod-autoscaler - uses: golangci/golangci-lint-action@v8 - with: - args: --timeout=30m - working-directory: ${{ env.GOPATH }}/src/k8s.io/autoscaler/vertical-pod-autoscaler - - - name: Test - working-directory: ${{ env.GOPATH }}/src/k8s.io/autoscaler - run: hack/for-go-proj.sh test - env: - GO111MODULE: auto diff --git a/.github/workflows/vpa-golangci-lint.yaml b/.github/workflows/vpa-golangci-lint.yaml new file mode 100644 index 000000000000..21a9daa6b7c6 --- /dev/null +++ b/.github/workflows/vpa-golangci-lint.yaml @@ -0,0 +1,36 @@ +name: Vertical Pod Autoscaler + +on: + push: + paths: + - 'vertical-pod-autoscaler/**' + pull_request: + paths: + - 'vertical-pod-autoscaler/**' + +env: + GOPATH: ${{ github.workspace }}/go + +permissions: + contents: read + +jobs: + lint: + name: Run golangci-lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + path: ${{ env.GOPATH }}/src/k8s.io/autoscaler + - uses: actions/setup-go@v6 + with: + go-version: '1.25.0' + cache-dependency-path: | + ${{ env.GOPATH}}/src/k8s.io/autoscaler/vertical-pod-autoscaler/go.sum + ${{ env.GOPATH}}/src/k8s.io/autoscaler/vertical-pod-autoscaler/e2e/go.sum + + - name: golangci-lint - vertical-pod-autoscaler + uses: golangci/golangci-lint-action@v8 + with: + args: --timeout=30m + working-directory: ${{ env.GOPATH }}/src/k8s.io/autoscaler/vertical-pod-autoscaler diff --git a/.github/workflows/vpa-test.yaml b/.github/workflows/vpa-test.yaml new file mode 100644 index 000000000000..e8611a9d8fc4 --- /dev/null +++ b/.github/workflows/vpa-test.yaml @@ -0,0 +1,43 @@ +name: Vertical Pod Autoscaler + +on: + push: + paths: + - 'vertical-pod-autoscaler/**' + pull_request: + paths: + - 'vertical-pod-autoscaler/**' + +env: + GOPATH: ${{ github.workspace }}/go + +permissions: + contents: read + checks: write + +jobs: + test: + name: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4.2.2 + with: + path: ${{ env.GOPATH }}/src/k8s.io/autoscaler + + - name: Set up Go + uses: actions/setup-go@v5.5.0 + with: + go-version: '1.24.0' + cache-dependency-path: | + ${{ env.GOPATH}}/src/k8s.io/autoscaler/vertical-pod-autoscaler/go.sum + ${{ env.GOPATH}}/src/k8s.io/autoscaler/vertical-pod-autoscaler/e2e/go.sum + + - name: Apt-get + run: sudo apt-get install libseccomp-dev -qq + + - name: Test + working-directory: ${{ env.GOPATH }}/src/k8s.io/autoscaler + run: hack/for-go-proj.sh vertical-pod-autoscaler + env: + GO111MODULE: auto + PROJECT_NAMES: "" diff --git a/cluster-autoscaler/README.md b/cluster-autoscaler/README.md index 540d91503d50..f455e55b2fe3 100644 --- a/cluster-autoscaler/README.md +++ b/cluster-autoscaler/README.md @@ -4,7 +4,7 @@ # Introduction Cluster Autoscaler is a tool that automatically adjusts the size of the Kubernetes cluster when one of the following conditions is true: -* there are pods that failed to run in the cluster due to insufficient +* there are pods that failed to be scheduled in the cluster due to insufficient resources. * there are nodes in the cluster that have been underutilized for an extended period of time and their pods can be placed on other existing nodes. diff --git a/hack/for-go-proj.sh b/hack/for-go-proj.sh index eaaff6d71b8f..d82cbfd97418 100755 --- a/hack/for-go-proj.sh +++ b/hack/for-go-proj.sh @@ -19,58 +19,39 @@ set -o pipefail set -o nounset CONTRIB_ROOT="$(dirname ${BASH_SOURCE})/.." -PROJECT_NAMES=(addon-resizer vertical-pod-autoscaler) if [[ $# -ne 1 ]]; then - echo "missing subcommand: [build|install|test]" + echo "missing subcommand: [cluster-autoscaler|vertical-pod-autoscaler|addon-resizer]" exit 1 fi -CMD="${1}" - -case "${CMD}" in - "build") +PROJECT="${1}" + +case "${PROJECT}" in + "cluster-autoscaler") + pushd ${CONTRIB_ROOT}/cluster-autoscaler/ + # TODO: #8127 - Use default analyzers set by `go test` to include `printf` analyzer. + # Default analyzers that go test runs according to https://github.com/golang/go/blob/52624e533fe52329da5ba6ebb9c37712048168e0/src/cmd/go/internal/test/test.go#L649 + # This doesn't include the `printf` analyzer until cluster-autoscaler libraries are updated. + ANALYZERS="atomic,bool,buildtags,directive,errorsas,ifaceassert,nilfunc,slog,stringintconv,tests" + go test -count=1 ./... -vet="${ANALYZERS}" + popd ;; - "install") + "vertical-pod-autoscaler") + pushd ${CONTRIB_ROOT}/vertical-pod-autoscaler + go test -count=1 -race $(go list ./... | grep -v /vendor/ | grep -v vertical-pod-autoscaler/e2e | grep -v cluster-autoscaler/apis) + popd + pushd ${CONTRIB_ROOT}/vertical-pod-autoscaler/e2e + go test -run=None ./... + popd ;; - "test") + "addon-resizer") + pushd ${CONTRIB_ROOT}/addon-resizer + godep go test -race $(go list ./... | grep -v /vendor/ | grep -v vertical-pod-autoscaler/e2e) + popd ;; *) echo "invalid subcommand: ${CMD}" exit 1 ;; esac - -for project_name in ${PROJECT_NAMES[*]}; do - ( - export GO111MODULE=auto - project=${CONTRIB_ROOT}/${project_name} - echo "${CMD}ing ${project}" - cd "${project}" - case "${CMD}" in - "test") - if [[ -n $(find . -name "Godeps.json") ]]; then - godep go test -race $(go list ./... | grep -v /vendor/ | grep -v vertical-pod-autoscaler/e2e) - else - go test -count=1 -race $(go list ./... | grep -v /vendor/ | grep -v vertical-pod-autoscaler/e2e | grep -v cluster-autoscaler/apis) - fi - ;; - *) - godep go "${CMD}" ./... - ;; - esac - ) -done; - -if [ "${CMD}" = "build" ] || [ "${CMD}" == "test" ]; then - pushd ${CONTRIB_ROOT}/vertical-pod-autoscaler/e2e - go test -run=None ./... - popd - pushd ${CONTRIB_ROOT}/cluster-autoscaler/ - # TODO: #8127 - Use default analyzers set by `go test` to include `printf` analyzer. - # Default analyzers that go test runs according to https://github.com/golang/go/blob/52624e533fe52329da5ba6ebb9c37712048168e0/src/cmd/go/internal/test/test.go#L649 - # This doesn't include the `printf` analyzer until cluster-autoscaler libraries are updated. - ANALYZERS="atomic,bool,buildtags,directive,errorsas,ifaceassert,nilfunc,slog,stringintconv,tests" - go test -count=1 ./... -vet="${ANALYZERS}" - popd -fi diff --git a/vertical-pod-autoscaler/README.md b/vertical-pod-autoscaler/README.md index 1fa9412a49e3..a8688dbe5c96 100644 --- a/vertical-pod-autoscaler/README.md +++ b/vertical-pod-autoscaler/README.md @@ -14,7 +14,7 @@ Vertical Pod Autoscaler (VPA) frees users from the necessity of setting up-to-date resource requests for the containers in their pods. When configured, it will set the requests automatically based on usage and thus -allow proper scheduling onto nodes so that appropriate resource amount is +allow proper scheduling onto nodes so that appropriate resource overhead is available for each pod. It will also maintain ratios between requests and limits that were specified in initial containers configuration.