-
Notifications
You must be signed in to change notification settings - Fork 2
143 lines (138 loc) · 4.97 KB
/
Copy pathe2e.yml
File metadata and controls
143 lines (138 loc) · 4.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: e2e
on:
workflow_dispatch:
inputs:
region:
description: AWS region
default: us-east-1
type: string
pull_request:
types: [labeled]
permissions:
id-token: write
contents: read
packages: write
jobs:
setup:
if: >-
github.event_name == 'workflow_dispatch' ||
github.event.label.name == 'e2e'
runs-on: ubuntu-24.04
timeout-minutes: 30
outputs:
version: v0.0.0-e2e-${{ github.run_id }}
kubernetes_version: ${{ steps.kubernetes.outputs.version }}
ami_id: ${{ steps.ami.outputs.ami_id }}
ami_name: ${{ steps.ami.outputs.ami_name }}
bucket: ${{ steps.bucket.outputs.name }}
scenarios: ${{ steps.scenarios.outputs.list }}
source_ami_name: ${{ steps.source.outputs.AMI_NAME }}
source_version: ${{ steps.source.outputs.SOURCE_VERSION }}
env:
VERSION: v0.0.0-e2e-${{ github.run_id }}
AWS_REGION: ${{ inputs.region || 'us-east-1' }}
steps:
- uses: actions/checkout@v5
- id: kubernetes
run: |
version=$(./hack/compat-default-test-version)
echo "version=${version}" >> "${GITHUB_OUTPUT}"
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: ${{ env.AWS_REGION }}
role-duration-seconds: 14400
- run: make release-one VERSION=${VERSION} OS=linux ARCH=amd64
- uses: actions/upload-artifact@v4
with:
name: keights-linux-amd64
path: _output/staging/keights/linux/amd64/keights
retention-days: 1
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- run: make image VERSION=${VERSION}
- run: make image-push VERSION=${VERSION}
- run: make stackbot VERSION=${VERSION}
- id: ami
env:
KUBERNETES_VERSION: ${{ steps.kubernetes.outputs.version }}
run: |
make ami \
VERSION=${VERSION} \
KUBERNETES_VERSION=${KUBERNETES_VERSION} \
SUBNET_ID=${{ secrets.SUBNET_ID_PUBLIC }}
echo "ami_id=$(cat _output/ami/ami-id)" >> "${GITHUB_OUTPUT}"
echo "ami_name=$(cat _output/ami/ami-name)" >> "${GITHUB_OUTPUT}"
- id: bucket
run: |
name=$(make -s stackbot-bucket-create \
AWS_REGION=${{ env.AWS_REGION }} \
BUCKET_PREFIX=keights-e2e-${{ github.run_id }})
echo "name=${name}" >> "${GITHUB_OUTPUT}"
- run: |
make stackbot-upload \
VERSION=${VERSION} \
BUCKET=${{ steps.bucket.outputs.name }} \
PREFIX=lambda
- id: source
env:
TARGET_KUBERNETES_VERSION: ${{ steps.kubernetes.outputs.version }}
run: |
out=$(./hack/ami-find-upgrade-source)
if [ "${out}" = "SKIP" ]; then
echo "no upgrade-from source AMI; skipping upgrade scenario"
else
echo "${out}" >> "${GITHUB_OUTPUT}"
fi
- id: scenarios
run: |
if [ -n "${{ steps.source.outputs.AMI_NAME }}" ]; then
echo 'list=["fresh","upgrade"]' >> "${GITHUB_OUTPUT}"
else
echo 'list=["fresh"]' >> "${GITHUB_OUTPUT}"
fi
e2e:
needs: setup
uses: ./.github/workflows/e2e-run.yml
with:
version: ${{ needs.setup.outputs.version }}
kubernetes_version: ${{ needs.setup.outputs.kubernetes_version }}
ami_name: ${{ needs.setup.outputs.ami_name }}
bucket: ${{ needs.setup.outputs.bucket }}
scenarios: ${{ needs.setup.outputs.scenarios }}
keights_artifact_name: keights-linux-amd64
source_ami_name: ${{ needs.setup.outputs.source_ami_name }}
source_version: ${{ needs.setup.outputs.source_version }}
region: ${{ inputs.region || 'us-east-1' }}
module_source: ${{ github.workspace }}/terraform
secrets: inherit
cleanup:
needs: [setup, e2e]
if: always()
runs-on: ubuntu-24.04
timeout-minutes: 15
env:
VERSION: ${{ needs.setup.outputs.version }}
KUBERNETES_VERSION: ${{ needs.setup.outputs.kubernetes_version }}
AWS_REGION: ${{ inputs.region || 'us-east-1' }}
steps:
- uses: actions/checkout@v5
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: ${{ env.AWS_REGION }}
role-duration-seconds: 14400
- if: needs.setup.outputs.ami_id != ''
run: |
mkdir -p _output/ami
echo "${{ needs.setup.outputs.ami_id }}" > _output/ami/ami-id
make ami-destroy
- if: needs.setup.outputs.bucket != ''
run: make stackbot-bucket-delete BUCKET=${{ needs.setup.outputs.bucket }}
- continue-on-error: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: make image-delete VERSION=${VERSION} KUBERNETES_VERSION=${KUBERNETES_VERSION}