diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml deleted file mode 100644 index 2c256d16f691..000000000000 --- a/.github/workflows/pr.yaml +++ /dev/null @@ -1,67 +0,0 @@ -permissions: - contents: read - -jobs: - changes: - permissions: - contents: read # for dorny/paths-filter to fetch a list of changed files - pull-requests: read # for dorny/paths-filter to read pull requests - outputs: - charts: ${{ steps.filter.outputs.charts }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4.2.2 - - id: filter - uses: dorny/paths-filter@v2.11.1 - with: - filters: | - charts: - - 'charts/**/Chart.yaml' - - 'charts/**/*' - token: ${{ secrets.GITHUB_TOKEN }} - helm-lint-test: - if: ${{ needs.changes.outputs.charts == 'true' }} - name: Helm chart - needs: - - changes - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4.2.2 - - name: Fetch history - run: git fetch --prune --unshallow - - name: Set up chart-testing - uses: helm/chart-testing-action@v2.6.1 - - name: Run chart-testing (lint) - run: ct lint - # Only build a kind cluster if there are chart changes to test. - - name: Run chart-testing (list-changed) - id: list-changed - run: | - changed=$(ct list-changed) - if [[ -n "$changed" ]]; then - echo "changed=true" >> $GITHUB_OUTPUT - fi - - if: steps.list-changed.outputs.changed == 'true' - name: Create kind cluster - uses: helm/kind-action@v1.12.0 - - if: steps.list-changed.outputs.changed == 'true' - name: Run chart-testing (install) - run: ct install - helm-docs-validate: - if: ${{ needs.changes.outputs.charts == 'true' }} - name: Helm Docs - needs: - - changes - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4.2.2 - - name: Run helm-docs - uses: docker://jnorwood/helm-docs:v1.3.0 - - name: Check for changes - run: git diff --quiet charts/*/README.md - -name: Lint and Test Charts -on: pull_request diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index ce8b3102a068..000000000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,34 +0,0 @@ -permissions: - contents: read - -jobs: - release: - permissions: - contents: write # for helm/chart-releaser-action to push chart release and create a release - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4.2.2 - with: - fetch-depth: 0 - - - name: Configure Git - run: | - git config user.name "${GITHUB_ACTOR}" - git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" - - - name: Install Helm - uses: azure/setup-helm@v4.2.0 - with: - version: v3.4.0 - - - env: - CR_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CR_RELEASE_NAME_TEMPLATE: "cluster-autoscaler-chart-{{ .Version }}" - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.6.0 -name: Release Charts -on: - push: - branches: - - master diff --git a/.github/workflows/ci.yaml b/.github/workflows/verify.yaml similarity index 67% rename from .github/workflows/ci.yaml rename to .github/workflows/verify.yaml index fb3c9b0bd707..8071e1444195 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,7 @@ permissions: checks: write jobs: - test-and-verify: + verify: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.2.2 @@ -22,7 +22,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5.5.0 with: - go-version: '1.24.0' + go-version: '1.24.2' cache-dependency-path: | ${{ env.GOPATH}}/src/k8s.io/autoscaler/cluster-autoscaler/go.sum ${{ env.GOPATH}}/src/k8s.io/autoscaler/vertical-pod-autoscaler/go.sum @@ -41,16 +41,4 @@ jobs: working-directory: ${{ env.GOPATH }}/src/k8s.io/autoscaler 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 + GO111MODULE: auto \ No newline at end of file diff --git a/.github/workflows/vpa-test.yaml b/.github/workflows/vpa-test.yaml new file mode 100644 index 000000000000..605a4f6d2e36 --- /dev/null +++ b/.github/workflows/vpa-test.yaml @@ -0,0 +1,42 @@ +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.2' + 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: "" \ No newline at end of file diff --git a/hack/for-go-proj.sh b/hack/for-go-proj.sh index eaaff6d71b8f..3507f0566382 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 +esac \ No newline at end of file diff --git a/hack/verify-golint.sh b/hack/verify-golint.sh index 436f950cb5c0..2880ee88fb4b 100755 --- a/hack/verify-golint.sh +++ b/hack/verify-golint.sh @@ -23,15 +23,12 @@ cd "${KUBE_ROOT}" GOLINT=${GOLINT:-"golint"} excluded_packages=( - '/vendor/' - 'vertical-pod-autoscaler/pkg/client' 'cluster-autoscaler/cloudprovider/aws/aws-sdk-go' 'cluster-autoscaler/cloudprovider/magnum/gophercloud' 'cluster-autoscaler/cloudprovider/digitalocean/godo' 'cluster-autoscaler/cloudprovider/bizflycloud/gobizfly' 'cluster-autoscaler/cloudprovider/brightbox/gobrightbox' 'cluster-autoscaler/cloudprovider/brightbox/k8ssdk' - 'cluster-autoscaler/cloudprovider/brightbox/linkheader' 'cluster-autoscaler/cloudprovider/brightbox/go-cache' 'cluster-autoscaler/cloudprovider/externalgrpc/protos' 'cluster-autoscaler/cloudprovider/exoscale/internal' @@ -45,7 +42,7 @@ excluded_packages=( 'cluster-autoscaler/cloudprovider/volcengine/volcengine-go-sdk' ) -FIND_PACKAGES='go list ./... ' +FIND_PACKAGES='go list ./... 2> /dev/null ' for package in "${excluded_packages[@]}"; do FIND_PACKAGES+="| grep -v ${package} " done diff --git a/vertical-pod-autoscaler/pkg/updater/main.go b/vertical-pod-autoscaler/pkg/updater/main.go index 8394fd54b29c..fa1a63910f83 100644 --- a/vertical-pod-autoscaler/pkg/updater/main.go +++ b/vertical-pod-autoscaler/pkg/updater/main.go @@ -160,6 +160,7 @@ const ( defaultRetryPeriod = 2 * time.Second ) +// defaultLeaderElectionConfiguration provides default leader election func defaultLeaderElectionConfiguration() componentbaseconfig.LeaderElectionConfiguration { return componentbaseconfig.LeaderElectionConfiguration{ LeaderElect: false,