-
Notifications
You must be signed in to change notification settings - Fork 8
130 lines (107 loc) · 4.07 KB
/
e2e-test.yaml
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
name: E2E Test # this test is based on this tutorial: https://docs.otterize.com/quick-tutorials/k8s-network-mapper
on:
pull_request:
types:
- opened
- synchronize
- reopened
- ready_for_review
- labeled
push:
branches:
- main
jobs:
test-chart-deployment:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Helm
uses: azure/[email protected]
- name: Start minikube
uses: medyagh/setup-minikube@master
with:
start-args: "--network-plugin=cni --cni=calico"
- name: Wait for Calico startup
run: |-
kubectl wait pods -n kube-system -l k8s-app=calico-kube-controllers --for condition=Ready --timeout=90s
kubectl wait pods -n kube-system -l k8s-app=calico-node --for condition=Ready --timeout=90s
kubectl wait pods -n kube-system -l k8s-app=calico-kube-controllers --for condition=Ready --timeout=90s
- name: Deploy Otterize
run: |-
helm dep up ./otterize-kubernetes
# schema validation using kubectl dry run
kubectl create namespace otterize-system # required for dry-run
helm template otterize ./otterize-kubernetes -n otterize-system --set global.telemetry.enabled=false | kubectl apply --dry-run=server -f -
kubectl delete namespace otterize-system # clean up
# installation
helm install otterize ./otterize-kubernetes -n otterize-system --wait --create-namespace --set global.telemetry.enabled=false
test-database-integrations:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Start minikube
uses: medyagh/setup-minikube@master
- name: Set up Helm
uses: azure/[email protected]
- name: Set up gotestfmt
uses: GoTestTools/gotestfmt-action@v2
with:
# Optional: pass GITHUB_TOKEN to avoid rate limiting.
token: ${{ secrets.GITHUB_TOKEN }}
- name: Helm dependency update
run: helm dep up ./otterize-kubernetes
- name: Run E2E tests - database integrations
run: |
cd tests
go test -v -json ./databases/... | tee gotest.log | gotestfmt
test-azure-integration:
if: contains(github.event.pull_request.labels.*.name, 'run-azure-e2e-tests') || (github.event_name == 'push' && github.ref == 'refs/heads/main')
timeout-minutes: 5
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }} # do not allow concurrent runs of this job
cancel-in-progress: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in with Azure
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Azure CLI script
uses: azure/CLI@v2
with:
inlineScript: |
az account show
- name: Set AKS context
uses: azure/aks-set-context@v4
with:
resource-group: 'otterizeGitHubActionsResourceGroup'
cluster-name: 'otterizeAzureIAME2EAKSCluster'
- name: Setup kubectl
uses: azure/setup-kubectl@v4
- name: Set up Helm
uses: azure/[email protected]
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: 1.22.1
cache-dependency-path: tests/go.sum
- name: Set up gotestfmt
uses: GoTestTools/gotestfmt-action@v2
with:
# Optional: pass GITHUB_TOKEN to avoid rate limiting.
token: ${{ secrets.GITHUB_TOKEN }}
- name: Helm dependency update
run: helm dep up ./otterize-kubernetes
- name: Cleanup test namespaces
run: |
kubectl delete namespace otterize-tutorial-azure-iam --ignore-not-found=true --wait
kubectl delete namespace otterize-system --ignore-not-found=true --wait
- name: Run E2E tests - azure integrations
run: |
cd tests
go test -v -json ./azureiam/... | tee gotest.log | gotestfmt