Skip to content

Commit be56185

Browse files
authored
Update automated release (#302)
* fix eks-charts sync copy * update eks-chart sync jobs * add chart version checks
1 parent 5c61df1 commit be56185

File tree

4 files changed

+66
-10
lines changed

4 files changed

+66
-10
lines changed

.travis.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
script: test/license-test/run-license-test.sh
5959
name: License Test
6060
- stage: Test
61-
if: type = push AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ AND env(DOCKER_USERNAME) IS present
61+
if: type = push AND env(GITHUB_TOKEN) IS present
6262
script: make helm-tests
6363
name: Helm Sync and Version Test
6464
- stage: Deploy
@@ -79,6 +79,10 @@ jobs:
7979
if: type = push AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ AND env(GITHUB_TOKEN) IS present
8080
script: make ekscharts-sync-release
8181
name: Sync to EKS Charts
82+
- stage: EKS Charts Sync Check
83+
if: type = push AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ AND env(DOCKER_USERNAME) IS present
84+
script: make helm-sync-test
85+
name: Validate Charts in sync
8286
- stage: ReadMe Version Sync
8387
if: type = push AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ AND env(GITHUB_TOKEN) IS present
8488
script: make create-release-prep-pr-readme

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ helm-version-sync-test:
9191
helm-lint:
9292
${MAKEFILE_PATH}/test/helm/helm-lint
9393

94+
helm-validate-eks-versions:
95+
${MAKEFILE_PATH}/test/helm/validate-chart-versions
96+
9497
build-binaries:
9598
${MAKEFILE_PATH}/scripts/build-binaries -p ${SUPPORTED_PLATFORMS_LINUX} -v ${VERSION} -d
9699

@@ -129,7 +132,7 @@ spellcheck:
129132

130133
build: compile
131134

132-
helm-tests: helm-sync-test helm-version-sync-test helm-lint
135+
helm-tests: helm-version-sync-test helm-lint helm-validate-eks-versions
133136

134137
eks-cluster-test:
135138
${MAKEFILE_PATH}/test/eks-cluster-test/run-test

scripts/sync-to-aws-eks-charts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ if [[ -z "${REPO}" ]]; then
6565
fi
6666

6767
if [[ -z $(command -v gh) ]] || [[ ! $(gh --version) =~ $GH_CLI_VERSION ]]; then
68-
mkdir -p ${BUILD_DIR}/gh
69-
curl -Lo ${BUILD_DIR}/gh/gh.tar.gz "https://github.com/cli/cli/releases/download/v${GH_CLI_VERSION}/gh_${GH_CLI_VERSION}_${OS}_amd64.tar.gz"
70-
tar -C ${BUILD_DIR}/gh -xvf "${BUILD_DIR}/gh/gh.tar.gz"
68+
mkdir -p "${BUILD_DIR}"/gh
69+
curl -Lo "${BUILD_DIR}"/gh/gh.tar.gz "https://github.com/cli/cli/releases/download/v${GH_CLI_VERSION}/gh_${GH_CLI_VERSION}_${OS}_amd64.tar.gz"
70+
tar -C "${BUILD_DIR}"/gh -xvf "${BUILD_DIR}/gh/gh.tar.gz"
7171
export PATH="${BUILD_DIR}/gh/gh_${GH_CLI_VERSION}_${OS}_amd64/bin:$PATH"
7272
if [[ ! $(gh --version) =~ $GH_CLI_VERSION ]]; then
7373
echo "❌ Failed install of github cli"
@@ -104,7 +104,7 @@ mkdir -p "${SYNC_DIR}"
104104
cd "${SYNC_DIR}"
105105
gh repo fork $CHARTS_REPO --clone --remote
106106
cd "${FORK_DIR}"
107-
git remote set-url origin https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/${GITHUB_USERNAME}/${CHARTS_REPO_NAME}.git
107+
git remote set-url origin https://"${GITHUB_USERNAME}":"${GITHUB_TOKEN}"@github.com/"${GITHUB_USERNAME}"/"${CHARTS_REPO_NAME}".git
108108
DEFAULT_BRANCH=$(git rev-parse --abbrev-ref HEAD | tr -d '\n')
109109

110110

@@ -123,9 +123,10 @@ git pull upstream "${DEFAULT_BRANCH}"
123123
git push -u origin "${DEFAULT_BRANCH}"
124124

125125
FORK_RELEASE_BRANCH="${BINARY_BASE}-${VERSION}-${PR_ID}"
126-
git checkout -b "${FORK_RELEASE_BRANCH}" upstream/${DEFAULT_BRANCH}
126+
git checkout -b "${FORK_RELEASE_BRANCH}" upstream/"${DEFAULT_BRANCH}"
127127

128-
cp -r "$NTH_HELM_CHART_DIR/*" "${FORK_DIR}/stable/aws-node-termination-handler/"
128+
rm -rf "${FORK_DIR}"/stable/aws-node-termination-handler/
129+
cp -r "$NTH_HELM_CHART_DIR/" "${FORK_DIR}/stable/aws-node-termination-handler/"
129130

130131
git add --all
131132
git commit -m "${BINARY_BASE}: ${VERSION}"
@@ -137,11 +138,11 @@ EOM
137138

138139
if [[ "${INCLUDE_NOTES}" -eq 1 ]]; then
139140
RELEASE_ID=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
140-
https://api.github.com/repos/${REPO}/releases | \
141+
https://api.github.com/repos/"${REPO}"/releases | \
141142
jq --arg VERSION "$VERSION" '.[] | select(.tag_name==$VERSION) | .id')
142143

143144
RELEASE_NOTES=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" \
144-
https://api.github.com/repos/${REPO}/releases/${RELEASE_ID} | \
145+
https://api.github.com/repos/"${REPO}"/releases/"${RELEASE_ID}" | \
145146
jq -r '.body')
146147

147148
PR_BODY=$(cat << EOM

test/helm/validate-chart-versions

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
NTH_HELM_DIR=config/helm/aws-node-termination-handler
5+
CHARTS_REPO="aws/eks-charts"
6+
CHARTS_REPO_NAME=$(echo ${CHARTS_REPO} | cut -d'/' -f2)
7+
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
8+
BUILD_DIR="${SCRIPTPATH}/../build"
9+
SYNC_DIR="${BUILD_DIR}/eks-charts-sync"
10+
FORK_DIR="${SYNC_DIR}/${CHARTS_REPO_NAME}"
11+
STABLE="${FORK_DIR}/stable"
12+
13+
function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
14+
15+
EXIT_CODE=0
16+
# Helm yaml changes should increment Chart version EXCEPT FOR test.yaml
17+
HELM_FILES_CHANGED=$(git show --name-only | grep -E "$NTH_HELM_DIR" | grep .yaml | grep -v test.yaml || :)
18+
if [[ -z $HELM_FILES_CHANGED ]]; then
19+
echo "✅ No Helm file changes detected"
20+
exit $EXIT_CODE
21+
fi
22+
23+
echo "📝 Helm chart changes detected! Checking for updated Chart versions since the last eks-charts release"
24+
LATEST_COMMIT_HASH=$(git rev-parse HEAD)
25+
LATEST_COMMIT_CHART_VERSION=$(git --no-pager show "$LATEST_COMMIT_HASH":"$NTH_HELM_DIR"/Chart.yaml | grep 'version:' | xargs | cut -d' ' -f2 | tr -d '[:space:]')
26+
27+
rm -rf "${SYNC_DIR}"
28+
mkdir -p "${SYNC_DIR}"
29+
30+
cd "${SYNC_DIR}"
31+
gh repo fork $CHARTS_REPO --clone --remote
32+
cd "${FORK_DIR}"
33+
34+
TAG=$(git describe HEAD --tags | grep -Eo "^v[0-9]+(\.[0-9]+)*")
35+
LAST_RELEASE_HASH=$(git rev-list -1 "$TAG")
36+
cd "${STABLE}"
37+
LAST_RELEASE_CHART_VERSION=$(git --no-pager show "$LAST_RELEASE_HASH":stable/aws-node-termination-handler/Chart.yaml | grep 'version:' | xargs | cut -d' ' -f2 | tr -d '[:space:]')
38+
if [[ $LAST_RELEASE_CHART_VERSION == "$LATEST_COMMIT_CHART_VERSION" ]]; then
39+
echo "❌ This commit's NTH Chart has the same Chart version as the latest release $LATEST_COMMIT_CHART_VERSION -- please increment Chart version in NTH"
40+
EXIT_CODE=1
41+
elif [[ $(version $LATEST_COMMIT_CHART_VERSION) -lt $(version $LAST_RELEASE_CHART_VERSION) ]]; then
42+
echo "❌ This commit's NTH Chart version $LATEST_COMMIT_CHART_VERSION is BEHIND the latest release's chart version $LAST_RELEASE_CHART_VERSION -- please increment Chart version in NTH"
43+
EXIT_CODE=1
44+
else
45+
echo "✅ This commit's NTH Chart has a different version since the last eks-charts release ($LAST_RELEASE_CHART_VERSION -> $LATEST_COMMIT_CHART_VERSION)"
46+
fi
47+
48+
exit $EXIT_CODE

0 commit comments

Comments
 (0)