1
+ name : E2E Build
2
+
3
+ on :
4
+ pull_request
5
+
6
+ jobs :
7
+
8
+ extract_metadata :
9
+ runs-on : ubuntu-latest
10
+ name : Extract supported_features
11
+ outputs :
12
+ supported-features : ${{ steps.supported-features.outputs.value }}
13
+ steps :
14
+ - name : Checkout code
15
+ uses : actions/checkout@v3
16
+ - name : Setup Node.js
17
+ uses : actions/setup-node@v3
18
+ with :
19
+ node-version : ' 18.x'
20
+ - name : extract supported features
21
+ id : supported-features
22
+ run : echo "value=$(node -p -e "require('./px_metadata.json').supported_features?.join(' or ') || ''")" >> "$GITHUB_OUTPUT"
23
+
24
+
25
+ CI :
26
+ runs-on : ubuntu-latest
27
+ timeout-minutes : 60
28
+ needs :
29
+ - extract_metadata
30
+
31
+ steps :
32
+
33
+ - name : build local cluster
34
+ uses : actions/checkout@v2
35
+ - run : ./ci_files/build_cluster.sh
36
+
37
+ - name : Set up Docker
38
+ uses : docker/setup-buildx-action@v1
39
+
40
+ - name : Build Sample-site Docker image
41
+ run : |
42
+ docker build -t localhost:5001/node-sample-site:1.0.0 . && docker images && docker push localhost:5001/node-sample-site:1.0.0
43
+ env :
44
+ DOCKER_BUILDKIT : 1
45
+
46
+
47
+ - name : install helm
48
+ run : |
49
+ curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
50
+ sudo apt-get install apt-transport-https --yes
51
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
52
+ sudo apt-get update
53
+ sudo apt-get install helm
54
+
55
+ - name : Checkout enforcer repo
56
+ uses : actions/checkout@v2
57
+
58
+ - name : Clone helm charts repo
59
+ uses : actions/checkout@v2
60
+ with :
61
+ repository : PerimeterX/connect-helm-charts
62
+ token : ${{ secrets.CONNECT_PULL_TOKEN }}
63
+ ref : main
64
+ path : ./deploy_charts
65
+
66
+
67
+ - name : deploy sample site
68
+ run : |
69
+ helm install sample-site ./deploy_charts/charts/sample-site --set image.name=localhost:5001/node-sample-site --set image.tag=1.0.0 --set imagePullPolicy=Always --set collectorURL=http://mock-collector-mock-collector:3001 --wait
70
+
71
+ - name : Set up Google Cloud SDK
72
+ id : ' auth'
73
+ uses : ' google-github-actions/auth@v1'
74
+ with :
75
+ credentials_json : ' ${{ secrets.GCR_SA_KEY }}'
76
+
77
+ - name : Configure Docker credentials
78
+ run : |
79
+ gcloud auth configure-docker gcr.io
80
+
81
+ - name : pull mock collector image
82
+ run : |
83
+ docker pull gcr.io/px-docker-repo/connecteam/mock-collector:1.0.2 && \
84
+ docker tag gcr.io/px-docker-repo/connecteam/mock-collector:1.0.2 localhost:5001/mock-collector:1.0.2 && \
85
+ docker push localhost:5001/mock-collector:1.0.2 && \
86
+ docker images
87
+
88
+ - name : deploy mock collector
89
+ run : |
90
+ helm install mock-collector ./deploy_charts/charts/mock-collector --set image.repository=localhost:5001/mock-collector --set image.tag=1.0.2 --set imagePullPolicy=Always --wait
91
+
92
+ - run : kubectl get pods
93
+
94
+ - name : pull enforcer tests image
95
+ run : |
96
+ docker pull gcr.io/px-docker-repo/connecteam/enforcer-specs-tests:1.1.0 && \
97
+ docker tag gcr.io/px-docker-repo/connecteam/enforcer-specs-tests:1.1.0 localhost:5001/enforcer-spec-tests:1.1.0 && \
98
+ docker push localhost:5001/enforcer-spec-tests:1.1.0 && \
99
+ docker images
100
+
101
+ - name : run enforcer tests
102
+ run : |
103
+ helm install enforcer-spec-tests ./deploy_charts/charts/enforcer-spec-tests --set image.repository=localhost:5001/enforcer-spec-tests --set image.tag=1.1.0 --set imagePullPolicy=Always \
104
+ --set internalMockCollectorURL=http://mock-collector-mock-collector:3001 \
105
+ --set appID=PXnEpdw6lS \
106
+ --set siteURL=http://sample-site-sample-site:3000 \
107
+ --set cookieSecret=${{ secrets.TEST_COOKIE_SECRET }} \
108
+ --set supportedFeatures="${{ needs.extract_metadata.outputs.supported-features }}" \
109
+ --set-file enforcerMetadataContent=./px_metadata.json
110
+
111
+ - name : wait until test is over
112
+ run : ./ci_files/wait-for-job.sh
113
+ env :
114
+ JOB_NAME : enforcer-spec-tests
115
+
116
+ - name : get tests results
117
+ if : ${{ failure() }}
118
+ run : kubectl logs job/enforcer-spec-tests
119
+
120
+ - name : get tests results
121
+ run : kubectl logs job/enforcer-spec-tests
0 commit comments