Skip to content
This repository was archived by the owner on Feb 19, 2025. It is now read-only.

Commit 3a6fd98

Browse files
feat: Added workflows for running e2e checks on the latest version (#83)
Co-authored-by: Mark Beacom <7315957+mbeacom@users.noreply.github.com>
1 parent 088bca6 commit 3a6fd98

File tree

6 files changed

+304
-0
lines changed

6 files changed

+304
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
name: Delete EKS Cluster
3+
description: 'Re-usable action to delete the active test clusters'
4+
5+
inputs:
6+
eks_version:
7+
description: 'The Python version to be used during setup'
8+
required: true
9+
iam_role:
10+
description: 'IAM role to be assumed by GitHub actions'
11+
required: true
12+
region:
13+
description: 'AWS Region to be used'
14+
required: true
15+
16+
17+
runs:
18+
using: composite
19+
20+
steps:
21+
- name: Configure AWS Credentials
22+
uses: aws-actions/configure-aws-credentials@v2
23+
with:
24+
role-to-assume: ${{ inputs.iam_role }}
25+
aws-region: ${{ inputs.region }}
26+
role-duration-seconds: 3600
27+
role-session-name: GithubActions-Session
28+
- name: setup eksctl
29+
shell: bash
30+
run: |
31+
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
32+
sudo mv /tmp/eksctl /usr/local/bin
33+
eksctl version
34+
- name: Destroy the cluster
35+
shell: bash
36+
id: destroy_cluster
37+
run: |
38+
cluster_version='${{ inputs.eks_version }}'
39+
echo "Destroying the temporary cluster eksup-cluster-${cluster_version/./-}"
40+
eksctl delete cluster -f .github/scripts/cluster_creation_${{inputs.eks_version}}.yaml
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
apiVersion: eksctl.io/v1alpha5
3+
kind: ClusterConfig
4+
5+
metadata:
6+
name: eksup-cluster-1-22
7+
region: us-east-1
8+
version: "1.22"
9+
managedNodeGroups:
10+
- name: eksup-managed-ng
11+
instanceType: t2.large
12+
minSize: 2
13+
maxSize: 2
14+
desiredCapacity: 2
15+
iam:
16+
withAddonPolicies:
17+
externalDNS: true
18+
certManager: true
19+
addons:
20+
- name: vpc-cni
21+
- name: coredns
22+
- name: kube-proxy
23+
availabilityZones: ['us-east-1a','us-east-1b']
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
apiVersion: eksctl.io/v1alpha5
3+
kind: ClusterConfig
4+
5+
metadata:
6+
name: eksup-cluster-1-23
7+
region: us-east-1
8+
version: "1.23"
9+
managedNodeGroups:
10+
- name: eksup-managed-ng
11+
instanceType: t2.large
12+
minSize: 2
13+
maxSize: 2
14+
desiredCapacity: 2
15+
iam:
16+
withAddonPolicies:
17+
externalDNS: true
18+
certManager: true
19+
addons:
20+
- name: vpc-cni
21+
- name: coredns
22+
- name: kube-proxy
23+
availabilityZones: ['us-east-1a','us-east-1b']
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
apiVersion: eksctl.io/v1alpha5
3+
kind: ClusterConfig
4+
5+
metadata:
6+
name: eksup-cluster-1-24
7+
region: us-east-1
8+
version: "1.24"
9+
managedNodeGroups:
10+
- name: eksup-managed-ng
11+
instanceType: t2.large
12+
minSize: 2
13+
maxSize: 2
14+
desiredCapacity: 2
15+
iam:
16+
withAddonPolicies:
17+
externalDNS: true
18+
certManager: true
19+
addons:
20+
- name: vpc-cni
21+
- name: coredns
22+
- name: kube-proxy
23+
availabilityZones: ['us-east-1a','us-east-1b']
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
---
2+
name: Cluster Upgrade tests - workflow
3+
4+
on:
5+
workflow_call:
6+
inputs:
7+
eksupgrade_version:
8+
type: string
9+
default: 'latest'
10+
trigger_tests:
11+
type: string
12+
default: 'true'
13+
trigger_destroy:
14+
type: string
15+
default: 'true'
16+
current_version:
17+
type: string
18+
required: true
19+
cluster_suffix:
20+
type: string
21+
required: true
22+
target_version:
23+
type: string
24+
required: true
25+
secrets:
26+
git_role:
27+
required: true
28+
29+
jobs:
30+
create-cluster:
31+
name: Cluster creation
32+
timeout-minutes: 120
33+
runs-on: ubuntu-latest
34+
permissions:
35+
id-token: write
36+
contents: read
37+
steps:
38+
- name: Checkout
39+
uses: actions/checkout@v3
40+
- name: Configure AWS Credentials
41+
uses: aws-actions/configure-aws-credentials@v2
42+
with:
43+
role-to-assume: ${{ secrets.git_role }}
44+
aws-region: us-east-1
45+
role-duration-seconds: 3600
46+
role-session-name: GithubActions-Session
47+
- name: setup eksctl
48+
run: |
49+
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
50+
sudo mv /tmp/eksctl /usr/local/bin
51+
eksctl version
52+
- name: create eks cluster
53+
id: create_cluster
54+
run: |
55+
echo "Creating the cluster eksup-cluster-'${{inputs.cluster_suffix}}'"
56+
eksctl create cluster -f .github/scripts/cluster_creation_${{inputs.current_version}}.yaml
57+
58+
59+
cluster-upgrade-check:
60+
name: Cluster Upgrade check
61+
timeout-minutes: 120
62+
runs-on: ubuntu-latest
63+
needs: create-cluster
64+
permissions:
65+
id-token: write
66+
contents: read
67+
steps:
68+
- name: Checkout
69+
uses: actions/checkout@v3
70+
- uses: actions/setup-python@v4
71+
with:
72+
python-version: '3.10'
73+
- name: install latest utility version
74+
id: install_deps_latest
75+
if: ${{inputs.eksupgrade_version == 'latest' }}
76+
run: |
77+
python3 -m pip install eksupgrade
78+
- name: install utility version from a ref
79+
id: install_deps_from_ref
80+
if: ${{inputs.eksupgrade_version == 'main' }}
81+
run: |
82+
python3 -m pip install git+https://github.com/aws-samples/eks-cluster-upgrade.git@main
83+
- name: Configure AWS Credentials
84+
uses: aws-actions/configure-aws-credentials@v2
85+
with:
86+
role-to-assume: ${{ secrets.git_role }}
87+
aws-region: us-east-1
88+
role-duration-seconds: 3600
89+
role-session-name: GithubActions-Session
90+
- name: Test no upgrade
91+
id: no_upgrade
92+
run: |
93+
echo "Test the cluster eksup-cluster-${{inputs.cluster_suffix}} with upgrade set to current version"
94+
eksupgrade eksup-cluster-${{inputs.cluster_suffix}} ${{inputs.current_version}} us-east-1
95+
- name: Test pre-flight checks
96+
id: preflight_checks
97+
run: |
98+
echo "Running pre-flight checks on the cluster eksup-cluster-${{inputs.cluster_suffix}} against version ${{inputs.target_version}} "
99+
eksupgrade eksup-cluster-${{inputs.cluster_suffix}} ${{inputs.target_version}} us-east-1 --preflight
100+
- name: Test standalone addon upgrade
101+
id: addon_upgrade
102+
run: |
103+
echo "Running upgrade addon checks on the cluster eksup-cluster-${{inputs.cluster_suffix}} with same control plane version "
104+
eksupgrade eksup-cluster-${{inputs.cluster_suffix}} ${{inputs.current_version}} us-east-1 --latest-addons
105+
- name: Test cluster upgrade
106+
id: cluster_upgrade
107+
run: |
108+
echo "Upgrading the cluster eksup-cluster-${{inputs.cluster_suffix}} to version ${{inputs.target_version}} "
109+
eksupgrade eksup-cluster-${{inputs.cluster_suffix}} ${{inputs.target_version}} us-east-1
110+
- name: Destroy the cluster
111+
if: ${{inputs.trigger_destroy == 'true'}}
112+
uses: './.github/actions/delete-cluster'
113+
with:
114+
eks_version: ${{inputs.current_version}}
115+
iam_role: ${{ secrets.git_role }}
116+
region: 'us-east-1'

.github/workflows/e2e-test.yaml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
name: Cluster Upgrade tests
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
eksupgrade_version:
8+
type: choice
9+
options: ['latest', 'main']
10+
description: Select the eksupgrade version you want to use
11+
default: 'latest'
12+
trigger_tests:
13+
type: choice
14+
options: ['true', 'false']
15+
description: Select if you want to trigger cluster creation and tests
16+
default: 'true'
17+
trigger_destroy:
18+
type: choice
19+
options: ['true', 'false']
20+
default: 'true'
21+
description: Destroy active test clusters ?
22+
23+
24+
concurrency: upgrade-test
25+
26+
jobs:
27+
cluster-upgrade-checks:
28+
if: ${{inputs.trigger_tests == 'true'}}
29+
permissions:
30+
id-token: write
31+
contents: read
32+
strategy:
33+
matrix:
34+
include:
35+
- current_version: 1.22
36+
cluster_suffix: 1-22
37+
target_version: 1.23
38+
- current_version: 1.23
39+
cluster_suffix: 1-23
40+
target_version: 1.24
41+
- current_version: 1.24
42+
cluster_suffix: 1-24
43+
target_version: 1.25
44+
uses: ./.github/workflows/e2e-test-template.yaml
45+
with:
46+
eksupgrade_version: ${{github.event.inputs.eksupgrade_version}}
47+
trigger_tests: ${{github.event.inputs.trigger_tests}}
48+
trigger_destroy: ${{github.event.inputs.trigger_destroy}}
49+
current_version: ${{matrix.current_version}}
50+
cluster_suffix: ${{matrix.cluster_suffix}}
51+
target_version: ${{matrix.target_version}}
52+
53+
secrets:
54+
git_role: ${{ secrets.ROLE_TO_ASSUME }}
55+
56+
57+
destroy-cluster:
58+
if: ${{inputs.trigger_destroy == 'true' && inputs.trigger_tests == 'false' }}
59+
name: Delete Active Clusters
60+
timeout-minutes: 120
61+
runs-on: ubuntu-latest
62+
permissions:
63+
id-token: write
64+
contents: read
65+
strategy:
66+
matrix:
67+
include:
68+
- eks_version: 1.22
69+
- eks_version: 1.23
70+
- eks_version: 1.24
71+
steps:
72+
- name: Checkout
73+
uses: actions/checkout@v3
74+
- name: Delete cluster
75+
uses: './.github/actions/delete-cluster'
76+
with:
77+
eks_version: ${{matrix.eks_version}}
78+
iam_role: ${{ secrets.ROLE_TO_ASSUME }}
79+
region: 'us-east-1'

0 commit comments

Comments
 (0)