Skip to content

Commit fd6d6aa

Browse files
committed
Extract common e2e logic to a different github action
1 parent 06f15b3 commit fd6d6aa

File tree

2 files changed

+118
-88
lines changed

2 files changed

+118
-88
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
name: E2E Setup
2+
description: This workflow is used to set up the environment for the E2E tests.
3+
inputs:
4+
mapper-tag:
5+
required: true
6+
type: string
7+
sniffer-tag:
8+
required: true
9+
type: string
10+
mapper-image:
11+
required: true
12+
type: string
13+
sniffer-image:
14+
required: true
15+
type: string
16+
registry:
17+
required: true
18+
type: string
19+
default: us-central1-docker.pkg.dev/main-383408/otterize
20+
runs:
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v2
24+
with:
25+
submodules: recursive
26+
27+
- name: Start minikube
28+
uses: medyagh/setup-minikube@master
29+
with:
30+
start-args: "--network-plugin=cni --cni=calico"
31+
32+
- name: Load images from GitHub Artifacts
33+
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
34+
uses: actions/download-artifact@v4
35+
with:
36+
name: ${{ env.REGISTRY }}_${{ github.actor }}_mapper_${{ github.sha }}.tar
37+
38+
- name: Load Docker image
39+
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
40+
run: |-
41+
docker image load -i mapper.tar
42+
minikube image load ${{ env.REGISTRY }}/${{ github.actor }}/mapper:${{ github.sha }}
43+
44+
- name: Load images from GitHub Artifacts
45+
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
46+
uses: actions/download-artifact@v4
47+
with:
48+
name: ${{ env.REGISTRY }}_${{ github.actor }}_sniffer_${{ github.sha }}.tar
49+
50+
- name: Load Docker image
51+
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
52+
run: |-
53+
docker image load -i sniffer.tar
54+
minikube image load ${{ env.REGISTRY }}/${{ github.actor }}/sniffer:${{ github.sha }}
55+
56+
- name: Load images from GitHub Artifacts
57+
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
58+
uses: actions/download-artifact@v4
59+
with:
60+
name: ${{ env.REGISTRY }}_${{ github.actor }}_kafka-watcher_${{ github.sha }}.tar
61+
62+
- name: Load Docker image
63+
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
64+
run: |-
65+
docker image load -i kafka-watcher.tar
66+
minikube image load ${{ env.REGISTRY }}/${{ github.actor }}/kafka-watcher:${{ github.sha }}
67+
68+
69+
- name: Login to GCR
70+
if: (github.event_name == 'push' && github.repository == 'otterize/network-mapper') || github.event.pull_request.head.repo.full_name == 'otterize/network-mapper'
71+
uses: docker/login-action@v2
72+
with:
73+
registry: ${{ env.REGISTRY }}
74+
username: _json_key_base64
75+
password: ${{ secrets.B64_GCLOUD_SERVICE_ACCOUNT_JSON }}
76+
77+
- name: Load Docker images from GCR
78+
if: (github.event_name == 'push' && github.repository == 'otterize/network-mapper') || github.event.pull_request.head.repo.full_name == 'otterize/network-mapper'
79+
run: |-
80+
docker pull ${{ env.REGISTRY }}/mapper:${{ inputs.mapper-tag }}
81+
minikube image load ${{ env.REGISTRY }}/mapper:${{ inputs.mapper-tag }}
82+
docker pull ${{ env.REGISTRY }}/sniffer:${{ inputs.sniffer-tag }}
83+
minikube image load ${{ env.REGISTRY }}/sniffer:${{ inputs.sniffer-tag }}
84+
85+
- name: Set up Helm
86+
uses: azure/setup-helm@v3
87+
88+
- name: Wait for Calico startup
89+
run: |-
90+
kubectl wait pods -n kube-system -l k8s-app=calico-kube-controllers --for condition=Ready --timeout=90s
91+
kubectl wait pods -n kube-system -l k8s-app=calico-node --for condition=Ready --timeout=90s
92+
kubectl wait pods -n kube-system -l k8s-app=calico-kube-controllers --for condition=Ready --timeout=90s
93+
94+
- name: Deploy Network Mapper
95+
run: |-
96+
MAPPER_FLAGS="--set-string mapper.repository=${{ env.REGISTRY }} --set-string mapper.image=${{ inputs.mapper-image }} --set-string mapper.tag=${{ inputs.mapper-tag }} --set-string mapper.pullPolicy=Never"
97+
SNIFFER_FLAGS="--set-string sniffer.repository=${{ env.REGISTRY }} --set-string sniffer.image=${{ inputs.sniffer-image }} --set-string sniffer.tag=${{ inputs.sniffer-tag }} --set-string sniffer.pullPolicy=Never"
98+
TELEMETRY_FLAG="--set global.telemetry.enabled=false"
99+
helm dep up ./helm-charts/network-mapper
100+
helm install otterize ./helm-charts/network-mapper -n otterize-system --create-namespace --set debug=true $MAPPER_FLAGS $SNIFFER_FLAGS $TELEMETRY_FLAG
101+
102+
- name: Install CLI
103+
run: |-
104+
wget --header="X-Otterize-Test: true" https://get.otterize.com/otterize-cli/v0.1.30/otterize_linux_x86_64.tar.gz
105+
tar xf otterize_linux_x86_64.tar.gz
106+
sudo cp otterize /usr/local/bin
107+
108+
- name: Wait for Otterize
109+
run: |-
110+
kubectl wait pods -n otterize-system -l app=otterize-network-sniffer --for condition=Ready --timeout=90s
111+
kubectl wait pods -n otterize-system -l app=otterize-network-mapper --for condition=Ready --timeout=90s

.github/workflows/e2e-test.yaml

Lines changed: 7 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -42,96 +42,19 @@ jobs:
4242
with:
4343
submodules: recursive
4444

45-
- name: Start minikube
46-
uses: medyagh/setup-minikube@master
45+
- name: Test setup
46+
uses: ./.github/workflows/e2e-test-setpup-action.yaml
4747
with:
48-
start-args: "--network-plugin=cni --cni=calico"
49-
50-
- name: Load images from GitHub Artifacts
51-
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
52-
uses: actions/download-artifact@v4
53-
with:
54-
name: ${{ env.REGISTRY }}_${{ github.actor }}_mapper_${{ github.sha }}.tar
55-
56-
- name: Load Docker image
57-
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
58-
run: |-
59-
docker image load -i mapper.tar
60-
minikube image load ${{ env.REGISTRY }}/${{ github.actor }}/mapper:${{ github.sha }}
61-
62-
- name: Load images from GitHub Artifacts
63-
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
64-
uses: actions/download-artifact@v4
65-
with:
66-
name: ${{ env.REGISTRY }}_${{ github.actor }}_sniffer_${{ github.sha }}.tar
67-
68-
- name: Load Docker image
69-
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
70-
run: |-
71-
docker image load -i sniffer.tar
72-
minikube image load ${{ env.REGISTRY }}/${{ github.actor }}/sniffer:${{ github.sha }}
73-
74-
- name: Load images from GitHub Artifacts
75-
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
76-
uses: actions/download-artifact@v4
77-
with:
78-
name: ${{ env.REGISTRY }}_${{ github.actor }}_kafka-watcher_${{ github.sha }}.tar
79-
80-
- name: Load Docker image
81-
if: github.repository != 'otterize/network-mapper' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != 'otterize/network-mapper')
82-
run: |-
83-
docker image load -i kafka-watcher.tar
84-
minikube image load ${{ env.REGISTRY }}/${{ github.actor }}/kafka-watcher:${{ github.sha }}
85-
86-
87-
- name: Login to GCR
88-
if: (github.event_name == 'push' && github.repository == 'otterize/network-mapper') || github.event.pull_request.head.repo.full_name == 'otterize/network-mapper'
89-
uses: docker/login-action@v2
90-
with:
91-
registry: ${{ env.REGISTRY }}
92-
username: _json_key_base64
93-
password: ${{ secrets.B64_GCLOUD_SERVICE_ACCOUNT_JSON }}
94-
95-
- name: Load Docker images from GCR
96-
if: (github.event_name == 'push' && github.repository == 'otterize/network-mapper') || github.event.pull_request.head.repo.full_name == 'otterize/network-mapper'
97-
run: |-
98-
docker pull ${{ env.REGISTRY }}/mapper:${{ inputs.mapper-tag }}
99-
minikube image load ${{ env.REGISTRY }}/mapper:${{ inputs.mapper-tag }}
100-
docker pull ${{ env.REGISTRY }}/sniffer:${{ inputs.sniffer-tag }}
101-
minikube image load ${{ env.REGISTRY }}/sniffer:${{ inputs.sniffer-tag }}
102-
103-
- name: Set up Helm
104-
uses: azure/setup-helm@v3
105-
106-
- name: Wait for Calico startup
107-
run: |-
108-
kubectl wait pods -n kube-system -l k8s-app=calico-kube-controllers --for condition=Ready --timeout=90s
109-
kubectl wait pods -n kube-system -l k8s-app=calico-node --for condition=Ready --timeout=90s
110-
kubectl wait pods -n kube-system -l k8s-app=calico-kube-controllers --for condition=Ready --timeout=90s
111-
112-
- name: Deploy Network Mapper
113-
run: |-
114-
MAPPER_FLAGS="--set-string mapper.repository=${{ env.REGISTRY }} --set-string mapper.image=${{ inputs.mapper-image }} --set-string mapper.tag=${{ inputs.mapper-tag }} --set-string mapper.pullPolicy=Never"
115-
SNIFFER_FLAGS="--set-string sniffer.repository=${{ env.REGISTRY }} --set-string sniffer.image=${{ inputs.sniffer-image }} --set-string sniffer.tag=${{ inputs.sniffer-tag }} --set-string sniffer.pullPolicy=Never"
116-
TELEMETRY_FLAG="--set global.telemetry.enabled=false"
117-
helm dep up ./helm-charts/network-mapper
118-
helm install otterize ./helm-charts/network-mapper -n otterize-system --create-namespace --set debug=true $MAPPER_FLAGS $SNIFFER_FLAGS $TELEMETRY_FLAG
119-
120-
- name: Install CLI
121-
run: |-
122-
wget --header="X-Otterize-Test: true" https://get.otterize.com/otterize-cli/v0.1.30/otterize_linux_x86_64.tar.gz
123-
tar xf otterize_linux_x86_64.tar.gz
124-
sudo cp otterize /usr/local/bin
48+
mapper-tag: ${{ inputs.mapper-tag }}
49+
sniffer-tag: ${{ inputs.sniffer-tag }}
50+
mapper-image: ${{ inputs.mapper-image }}
51+
sniffer-image: ${{ inputs.sniffer-image }}
52+
registry: ${{ inputs.registry }}
12553

12654
- name: Deploy Tutorial services
12755
run: |-
12856
kubectl apply -n otterize-tutorial-mapper -f https://docs.otterize.com/code-examples/network-mapper/all.yaml
12957
130-
- name: Wait for Otterize
131-
run: |-
132-
kubectl wait pods -n otterize-system -l app=otterize-network-sniffer --for condition=Ready --timeout=90s
133-
kubectl wait pods -n otterize-system -l app=otterize-network-mapper --for condition=Ready --timeout=90s
134-
13558
- name: Wait for Tutorial services
13659
run: |-
13760
kubectl wait pods -n otterize-tutorial-mapper -l app=client --for condition=Ready --timeout=90s
@@ -166,7 +89,3 @@ jobs:
16689
diff .github/workflows/tests-expected-results/simple-tutorial-intents.json /tmp/intents.json
16790
echo "expected" && cat .github/workflows/tests-expected-results/simple-tutorial-intents.json
16891
echo "actual" && cat /tmp/intents.json
169-
170-
171-
172-

0 commit comments

Comments
 (0)