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