Skip to content

Commit

Permalink
Merge pull request #5211 from ministryofjustice/create-one-issue-for-…
Browse files Browse the repository at this point in the history
…upgrades

style: 💄 create one ticket per upgrade
  • Loading branch information
jaskaransarkaria authored Jan 18, 2024
2 parents f0639a8 + bab3b57 commit 5409a62
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 51 deletions.
60 changes: 32 additions & 28 deletions scripts/eks-addon-updates.sh
Original file line number Diff line number Diff line change
@@ -1,31 +1,36 @@
#!/bin/bash

# list clusters
CLUSTERS=(live live-2 manager)
set -ex

for CLUSTER in "${CLUSTERS[@]}";
do
# get cluster versions
CLUSTER_VERSION=$(aws eks describe-cluster --name "$CLUSTER" | jq -r '.cluster.version')
CLUSTER=live

# get cluster versions
CLUSTER_VERSION=$(aws eks describe-cluster --name "$CLUSTER" | jq -r '.cluster.version')

# get addons
CLUSTER_ADDONS=($(aws eks list-addons --cluster-name "$CLUSTER" | jq -r '.addons[] | .'))
# get addons
CLUSTER_ADDONS=($(aws eks list-addons --cluster-name "$CLUSTER" | jq -r '.addons[] | .'))

for CLUSTER_ADDON in "${CLUSTER_ADDONS[@]}";
do
# get addon version for cluster
CLUSTER_ADDON_VERSION=$(aws eks describe-addon --cluster-name "$CLUSTER" --addon-name "$CLUSTER_ADDON" | jq -r '.addon.addonVersion')
for CLUSTER_ADDON in "${CLUSTER_ADDONS[@]}";
do
# get addon version for cluster
CLUSTER_ADDON_VERSION=$(aws eks describe-addon --cluster-name "$CLUSTER" --addon-name "$CLUSTER_ADDON" | jq -r '.addon.addonVersion')

# get latest supported addon version for the cluster/k8s version
LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION=$(aws eks describe-addon-versions --addon-name "$CLUSTER_ADDON" --kubernetes-version "$CLUSTER_VERSION" | jq -r '.addons[0].addonVersions[0].addonVersion')
# get latest supported addon version for the cluster/k8s version
LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION=$(aws eks describe-addon-versions --addon-name "$CLUSTER_ADDON" --kubernetes-version "$CLUSTER_VERSION" | jq -r '.addons[0].addonVersions[0].addonVersion')

TITLE="EKS addon ($CLUSTER): Update $CLUSTER_ADDON from $CLUSTER_ADDON_VERSION to the latest version"
TITLE="EKS addon Production Clusters: Update $CLUSTER_ADDON from $CLUSTER_ADDON_VERSION to the latest version"

if [[ "$LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION" != "$CLUSTER_ADDON_VERSION" ]]; then # check if newer version is supported
BODY=$(cat << END
if [[ "$LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION" != "$CLUSTER_ADDON_VERSION" ]]; then # check if newer version is supported
BODY=$(cat << END
## Background
There is a new version of the EKS add-on $CLUSTER_ADDON. $CLUSTER_ADDON needs updating on the $CLUSTER cluster. When this issue was created, the latest supported add-on version for Kubernetes $CLUSTER_VERSION was $LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION.
There is a new version of the EKS add-on $CLUSTER_ADDON. $CLUSTER_ADDON needs updating on all of our clusters. When this issue was created, the latest supported add-on version for Kubernetes $CLUSTER_VERSION was $LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION.
## Production Clusters Checklist:
- [ ] live-2
- [ ] manager
- [ ] live
See the [Amazon EKS add-ons](https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html) documentation for more information about addons, or find the latest versions for these EKS add-ons directly:
Expand All @@ -35,18 +40,17 @@ See the [Amazon EKS add-ons](https://docs.aws.amazon.com/eks/latest/userguide/ek
END
)

GITHUB_ISSUES=$(gh issue list --repo ministryofjustice/cloud-platform --state all --search "in:title \"$TITLE\"" --limit 50 --json title | jq -r "[ .[] | select(.title == \"$TITLE\") ] | length")
GITHUB_ISSUES=$(gh issue list --repo ministryofjustice/cloud-platform --state all --search "in:title \"$TITLE\"" --limit 50 --json title | jq -r "[ .[] | select(.title == \"$TITLE\") ] | length")

# if no issues yet, create one
if (( $(echo "0 == $GITHUB_ISSUES" | bc -l) )); then
echo "No issue found for $TITLE, creating one..."
gh issue create --title "$TITLE" --body "$BODY" --repo ministryofjustice/cloud-platform
else
echo "Issue already exists for $TITLE, skipping..."
fi
# if no issues yet, create one
if (( $(echo "0 == $GITHUB_ISSUES" | bc -l) )); then
echo "No issue found for $TITLE, creating one..."
gh issue create --title "$TITLE" --body "$BODY" --repo ministryofjustice/cloud-platform
else
echo "Up to date, skipping issue creation for $TITLE"
echo "Issue already exists for $TITLE, skipping..."
fi
else
echo "Up to date, skipping issue creation for $TITLE"
fi

done
done
49 changes: 26 additions & 23 deletions scripts/eks-updates.sh
Original file line number Diff line number Diff line change
@@ -1,42 +1,45 @@
#!/bin/bash

set -ex

# get supported versions
VERSIONS=($(aws eks describe-addon-versions | jq -r ".addons[] | .addonVersions[] | .compatibilities[] | .clusterVersion" | sort | uniq))

# list clusters
CLUSTERS=(live live-2 manager)
CLUSTER=live

for CLUSTER in "${CLUSTERS[@]}";
# get cluster versions
CLUSTER_VERSION=$(aws eks describe-cluster --name "$CLUSTER" | jq -r '.cluster.version')

for VERSION in "${VERSIONS[@]}";
do
# get cluster versions
CLUSTER_VERSION=$(aws eks describe-cluster --name "$CLUSTER" | jq -r '.cluster.version')

for VERSION in "${VERSIONS[@]}";
do
if [[ "$CLUSTER_VERSION" != "$VERSION" ]]; then
if (( $(echo "$CLUSTER_VERSION < $VERSION" | bc -l) )); then # check if newer version is supported
TITLE="EKS: Upgrade $CLUSTER to Kubernetes v$VERSION";
BODY=$(cat << END
if [[ "$CLUSTER_VERSION" != "$VERSION" ]]; then
if (( $(echo "$CLUSTER_VERSION < $VERSION" | bc -l) )); then # check if newer version is supported
TITLE="EKS: Upgrade Production Clusters to Kubernetes v$VERSION";
BODY=$(cat << END
## Background
EKS supports Kubernetes $VERSION. The $CLUSTER cluster needs upgrading to Kubernetes $VERSION.
EKS supports Kubernetes $VERSION. Our Production Clusters need upgrading to Kubernetes $VERSION.
## Production Clusters Checklist:
- [ ] live-2
- [ ] manager
- [ ] live
See [Amazon EKS Kubernetes versions](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) for more details.
END
)

# get github issues and check if one already exists
GITHUB_ISSUES=$(gh issue list --repo ministryofjustice/cloud-platform --state all --search "in:title \"$TITLE\"" --limit 50 --json title | jq -r "[ .[] | select(.title == \"$TITLE\") ] | length")
# get github issues and check if one already exists
GITHUB_ISSUES=$(gh issue list --repo ministryofjustice/cloud-platform --state all --search "in:title \"$TITLE\"" --limit 50 --json title | jq -r "[ .[] | select(.title == \"$TITLE\") ] | length")

# if no issues yet, create one
if (( $(echo "0 == $GITHUB_ISSUES" | bc -l) )); then
echo "No issue found for $TITLE, creating one..."
gh issue create --title "$TITLE" --body "$BODY" --label EPIC --repo ministryofjustice/cloud-platform
else
echo "Issue already exists for $TITLE, skipping..."
fi
# if no issues yet, create one
if (( $(echo "0 == $GITHUB_ISSUES" | bc -l) )); then
echo "No issue found for $TITLE, creating one..."
gh issue create --title "$TITLE" --body "$BODY" --label EPIC --repo ministryofjustice/cloud-platform
else
echo "Issue already exists for $TITLE, skipping..."
fi
fi
done
fi
done

0 comments on commit 5409a62

Please sign in to comment.