diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 66987a663..034fa68c5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,9 +1,11 @@ name: CI on: - push: - branches: [master] pull_request: + paths: + - "**/*.tpl" + - "**/*.yaml" workflow_dispatch: + jobs: ci: runs-on: ubuntu-latest @@ -11,13 +13,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: actions/setup-go@v3 - with: - go-version: 1.19 - check-latest: true + - run: make install-toolchain - run: make verify - run: make package diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 47cfbdcfd..8556e3d82 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -15,13 +15,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: actions/setup-go@v3 - with: - go-version: 1.19 - check-latest: true + - run: make install-toolchain - run: make verify - run: make package publish diff --git a/Makefile b/Makefile index 37d1cd7f7..322a99391 100644 --- a/Makefile +++ b/Makefile @@ -35,4 +35,4 @@ clean: help: @grep -E '^[a-zA-Z_-]+:.*$$' $(MAKEFILE_LIST) | sort -.PHONY: all build test verify package publish draft-release help \ No newline at end of file +.PHONY: all build test verify package publish draft-release help diff --git a/scripts/install-toolchain.sh b/scripts/install-toolchain.sh index fc9e64e83..abf0c5718 100755 --- a/scripts/install-toolchain.sh +++ b/scripts/install-toolchain.sh @@ -10,11 +10,10 @@ TOOLS_DIR="${BUILD_DIR}/tools" mkdir -p "${TOOLS_DIR}" export PATH="${TOOLS_DIR}:${PATH}" -HELMV2_VERSION="v2.17.0" -HELMV3_VERSION="v3.6.3" +HELM_VERSION="v3.16.1" KUBECTL_VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) -KIND_VERSION=v0.11.1 -BATS_VERSION=1.1.0 +KIND_VERSION=v0.24.0 +BATS_VERSION=1.11.0 ## Install kubectl curl -sSL "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/${PLATFORM}/${ARCH}/kubectl" -o "${TOOLS_DIR}/kubectl" @@ -25,27 +24,16 @@ mkdir -p "${TMP_DIR}/kubeval" curl -sSL https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-${PLATFORM}-${ARCH}.tar.gz | tar xz -C "${TMP_DIR}/kubeval" mv "${TMP_DIR}/kubeval/kubeval" "${TOOLS_DIR}/kubeval" -## Install helm v2 -mkdir -p "${TMP_DIR}/helmv2" -curl -sSL https://get.helm.sh/helm-${HELMV2_VERSION}-${PLATFORM}-${ARCH}.tar.gz | tar xz -C "${TMP_DIR}/helmv2" -mv "${TMP_DIR}/helmv2/${PLATFORM}-${ARCH}/helm" "${TOOLS_DIR}/helmv2" -rm -rf "${PLATFORM}-${ARCH}" - -## Install helm v3 -mkdir -p "${TMP_DIR}/helmv3" -curl -sSL https://get.helm.sh/helm-${HELMV3_VERSION}-${PLATFORM}-${ARCH}.tar.gz | tar xz -C "${TMP_DIR}/helmv3" -mv "${TMP_DIR}/helmv3/${PLATFORM}-${ARCH}/helm" "${TOOLS_DIR}/helmv3" +## Install helm +mkdir -p "${TMP_DIR}/helm" +curl -sSL https://get.helm.sh/helm-${HELM_VERSION}-${PLATFORM}-${ARCH}.tar.gz | tar xz -C "${TMP_DIR}/helm" +mv "${TMP_DIR}/helm/${PLATFORM}-${ARCH}/helm" "${TOOLS_DIR}/helm" rm -rf "${PLATFORM}-${ARCH}" ## Install Bats curl -sSL https://github.com/bats-core/bats-core/archive/v${BATS_VERSION}.tar.gz | tar xz -C "${TOOLS_DIR}" ln -s ${TOOLS_DIR}/bats-core-${BATS_VERSION}/bin/bats ${TOOLS_DIR}/bats -## Initialize helm - -helmv2 init --stable-repo-url https://charts.helm.sh/stable --client-only --kubeconfig="${BUILD_DIR}/.kube/kubeconfig" - - ## Install kind curl -sSL "https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-${PLATFORM}-${ARCH}" -o "${TOOLS_DIR}/kind" chmod +x "${TOOLS_DIR}/kind" diff --git a/scripts/lint-charts.sh b/scripts/lint-charts.sh index 7eb43af2b..b2677189b 100755 --- a/scripts/lint-charts.sh +++ b/scripts/lint-charts.sh @@ -7,8 +7,7 @@ TOOLS_DIR="${BUILD_DIR}/tools" STABLE="${GIT_REPO_ROOT}/stable" export PATH="${TOOLS_DIR}:${PATH}" -FAILED_V2=() -FAILED_V3=() +FAILED=() cd ${STABLE} for d in */; do @@ -16,22 +15,16 @@ for d in */; do if [ -f ${STABLE}/${d}/ci/extra_args ]; then EXTRA_ARGS=$(cat ${STABLE}/${d}/ci/extra_args) fi - echo "Linting chart ${d} w/ helm v3" - helmv3 lint ${STABLE}/${d} || FAILED_V3+=("${d}") - echo "Linting chart ${d} w/ helm v2" - helmv2 lint ${STABLE}/${d} || FAILED_V2+=("${d}") + echo "Linting chart ${d} w/ helm" + helm lint ${STABLE}/${d} || FAILED+=("${d}") done -if [[ "${#FAILED_V2[@]}" -eq 0 ]] && [[ "${#FAILED_V3[@]}" -eq 0 ]]; then +if [[ "${#FAILED[@]}" -eq 0 ]]; then echo "All charts passed linting!" exit 0 else - echo "Helm v2:" - for chart in "${FAILED_V2[@]}"; do - printf "%40s ❌\n" "$chart" - done - echo "Helm v3:" - for chart in "${FAILED_V2[@]}"; do + echo "Helm linting failed:" + for chart in "${FAILED[@]}"; do printf "%40s ❌\n" "$chart" done fi diff --git a/scripts/package-charts.sh b/scripts/package-charts.sh index 05aa5879e..ffbc4e58b 100755 --- a/scripts/package-charts.sh +++ b/scripts/package-charts.sh @@ -10,4 +10,4 @@ export PATH="${TOOLS_DIR}:${PATH}" PACKAGE_DIR="${GIT_REPO_ROOT}/build" mkdir -p "${PACKAGE_DIR}" -helmv3 package "${STABLE}/"* --destination "${PACKAGE_DIR}/stable" --dependency-update +helm package "${STABLE}/"* --destination "${PACKAGE_DIR}/stable" --dependency-update diff --git a/scripts/publish-charts.sh b/scripts/publish-charts.sh index a9849f3c3..a78b1c5c1 100755 --- a/scripts/publish-charts.sh +++ b/scripts/publish-charts.sh @@ -17,7 +17,7 @@ if echo "${VERSION}" | grep -Eq "^v[0-9]+(\.[0-9]+){2}$"; then git config pull.rebase false git checkout gh-pages mv -n $PACKAGE_DIR/stable/*.tgz . - helmv3 repo index . --url https://aws.github.io/eks-charts + helm repo index . --url https://aws.github.io/eks-charts git add . git commit -m "Publish stable charts ${VERSION}" git push origin gh-pages diff --git a/scripts/validate-charts.sh b/scripts/validate-charts.sh index 535b9bfd2..d03d974b6 100755 --- a/scripts/validate-charts.sh +++ b/scripts/validate-charts.sh @@ -7,8 +7,7 @@ TOOLS_DIR="${BUILD_DIR}/tools" STABLE="${GIT_REPO_ROOT}/stable" export PATH="${TOOLS_DIR}:${PATH}" -FAILED_V2=() -FAILED_V3=() +FAILED=() cd ${STABLE} for d in */; do @@ -16,22 +15,16 @@ for d in */; do if [ -f ${STABLE}/${d}/ci/extra_args ]; then EXTRA_ARGS=$(cat ${STABLE}/${d}/ci/extra_args) fi - echo "Validating chart ${d} w/ helm v3" - helmv3 template ${STABLE}/${d} ${EXTRA_ARGS}| kubeval --strict --ignore-missing-schemas || FAILED_V3+=("${d}") - echo "Validating chart ${d} w/ helm v2" - helm template ${STABLE}/${d} ${EXTRA_ARGS}| kubeval --strict --ignore-missing-schemas || FAILED_V2+=("${d}") + echo "Validating chart ${d} w/ helm" + helm template ${STABLE}/${d} ${EXTRA_ARGS}| kubeval --strict --ignore-missing-schemas || FAILED+=("${d}") done -if [[ "${#FAILED_V2[@]}" -eq 0 ]] && [[ "${#FAILED_V3[@]}" -eq 0 ]]; then +if [[ "${#FAILED[@]}" -eq 0 ]]; then echo "All charts passed validations!" exit 0 else - echo "Helm v2:" - for chart in "${FAILED_V2[@]}"; do - printf "%40s ❌\n" "$chart" - done - echo "Helm v3:" - for chart in "${FAILED_V3[@]}"; do + echo "Helm validation failed:" + for chart in "${FAILED[@]}"; do printf "%40s ❌\n" "$chart" done fi