diff --git a/.github/workflows/ca-test.yaml b/.github/workflows/ca-test.yaml new file mode 100644 index 000000000000..262ec9d06df7 --- /dev/null +++ b/.github/workflows/ca-test.yaml @@ -0,0 +1,41 @@ +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.23.11' + 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: "" \ No newline at end of file diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml deleted file mode 100644 index 878056092c0c..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@v2 - - id: filter - uses: dorny/paths-filter@v2.2.0 - 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@v2 - - name: Fetch history - run: git fetch --prune --unshallow - - name: Set up chart-testing - uses: helm/chart-testing-action@v2.0.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.1.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@v2 - - 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 4b7ff78a43af..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@v2 - 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@v1 - 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.1.0 -name: Release Charts -on: - push: - branches: - - master diff --git a/.github/workflows/ci.yaml b/.github/workflows/verify.yaml similarity index 57% rename from .github/workflows/ci.yaml rename to .github/workflows/verify.yaml index 19e3aedca9cf..1e2a904b38f2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/verify.yaml @@ -1,4 +1,4 @@ -name: Tests +name: Verify Go on: - push @@ -9,19 +9,25 @@ env: permissions: contents: read + checks: write jobs: - test-and-verify: + verify: + name: verify runs-on: ubuntu-latest steps: - - name: Set up Go - uses: actions/setup-go@v2 + - uses: actions/checkout@v4.2.2 with: - go-version: '1.22.2' + path: ${{ env.GOPATH }}/src/k8s.io/autoscaler - - uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v5.5.0 with: - path: ${{ env.GOPATH }}/src/k8s.io/autoscaler + go-version: '1.22.12' + cache-dependency-path: | + ${{ env.GOPATH}}/src/k8s.io/autoscaler/cluster-autoscaler/go.sum + ${{ 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 @@ -36,10 +42,4 @@ jobs: working-directory: ${{ env.GOPATH }}/src/k8s.io/autoscaler run: hack/verify-all.sh -v env: - GO111MODULE: auto - - - 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/hack/for-go-proj.sh b/hack/for-go-proj.sh index f44f997c41fd..3507f0566382 100755 --- a/hack/for-go-proj.sh +++ b/hack/for-go-proj.sh @@ -19,54 +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 -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 -mod vendor -run=None ./... - popd - pushd ${CONTRIB_ROOT}/cluster-autoscaler/ - go test ./... - popd -fi +esac \ No newline at end of file diff --git a/hack/verify-golint.sh b/hack/verify-golint.sh index a32965a99d43..691be61db1af 100755 --- a/hack/verify-golint.sh +++ b/hack/verify-golint.sh @@ -24,16 +24,13 @@ 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' 'cluster-autoscaler/cloudprovider/huaweicloud/huaweicloud-sdk-go-v3' 'cluster-autoscaler/cloudprovider/ionoscloud/ionos-cloud-sdk-go' @@ -44,7 +41,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