1
- name : API Gateway integration tests with Pytest
1
+ ---
2
+ name : API Gateway integration tests
2
3
3
4
on :
4
5
push :
@@ -11,90 +12,67 @@ permissions:
11
12
contents : read
12
13
13
14
env :
14
- GATEWAY_CHECKOUT_DIR : " gateway"
15
- S3_ENDPOINT : " https://s3.fr-par.scw.cloud"
16
- S3_REGION : " fr-par"
17
-
18
- defaults :
19
- run :
20
- shell : bash
15
+ SCW_DEFAULT_ORGANIZATION_ID : ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }}
16
+ SCW_SECRET_KEY : ${{ secrets.SCW_SECRET_KEY }}
17
+ SCW_ACCESS_KEY : ${{ secrets.SCW_ACCESS_KEY }}
18
+ SCW_DEFAULT_PROJECT_ID : ${{ secrets.SCW_DEFAULT_PROJECT_ID }}
21
19
22
20
jobs :
23
- test-deployed -gateway :
21
+ setup -gateway :
24
22
runs-on : self-hosted
25
- container : python:3.11-bullseye
23
+ container : python:3.11-bookworm
26
24
steps :
27
25
- uses : actions/checkout@v3
28
26
29
27
- uses : ./.github/actions/setup-poetry
30
28
31
- - uses : actions/checkout@v3
32
- with :
33
- repository : scaleway/serverless-gateway
34
- path : ${{ env.GATEWAY_CHECKOUT_DIR }}
35
-
36
- - name : Install CLI and create config file
37
- uses : scaleway/action-scw@v0.0.1
38
- with :
39
- version : v2.14.0
40
- access-key : ${{ secrets.SCW_ACCESS_KEY }}
41
- secret-key : ${{ secrets.SCW_SECRET_KEY }}
42
- default-project-id : ${{ secrets.SCW_DEFAULT_PROJECT_ID }}
43
- default-organization-id : ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }}
44
- save-config : true
45
-
46
- - name : Install jq
47
- run : apt-get update && apt-get install -y jq
48
-
49
- - name : Create Gateway namespace
50
- working-directory : ${{ env.GATEWAY_CHECKOUT_DIR }}
29
+ - name : Create gateway database
51
30
run : |
52
- make create-namespace
53
- until [ $(make check-namespace -s) == ready ]; do sleep 10; done
31
+ poetry run scwgw create-db
32
+ poetry run scwgw await-db
54
33
55
- - name : Create Gateway container
56
- working-directory : ${{ env.GATEWAY_CHECKOUT_DIR }}
57
- # We need to truncate gateway.env as it will override our env vars
34
+ - name : Create gateway namespace
58
35
run : |
59
- truncate -s 0 gateway.env
60
- make create-container
61
- make deploy-container
62
- until [ $(make check-container -s) == ready ]; do sleep 10; done
63
- env :
64
- SCW_ACCESS_KEY : ${{ secrets.SCW_ACCESS_KEY }}
65
- SCW_SECRET_KEY : ${{ secrets.SCW_SECRET_KEY }}
66
- S3_BUCKET_NAME : ${{ secrets.GATEWAY_S3_BUCKET_NAME }}
67
-
68
- - name : Install s3cmd
69
- run : pip install s3cmd
70
-
71
- - name : Create S3 bucket
72
- working-directory : ${{ env.GATEWAY_CHECKOUT_DIR }}
36
+ poetry run scwgw create-namespace
37
+ poetry run scwgw await-namespace
38
+
39
+ - name : Create gateway container
73
40
run : |
74
- make set-up-s3-cli
75
- make create-s3-bucket
76
- env :
77
- S3_BUCKET_NAME : ${{ secrets.GATEWAY_S3_BUCKET_NAME }}
41
+ poetry run scwgw create-containers
42
+ poetry run scwgw await-containers
43
+
44
+ run-tests :
45
+ needs :
46
+ - setup-gateway
47
+ runs-on : self-hosted
48
+ container : python:3.11-bookworm
49
+ steps :
50
+ - uses : actions/checkout@v3
51
+
52
+ - uses : ./.github/actions/setup-poetry
78
53
79
54
- name : Run integration tests
55
+ working-directory : tests
80
56
run : |
81
- pushd $GATEWAY_CHECKOUT_DIR
82
- export GATEWAY_HOST=$(make gateway-host -s)
83
- popd
84
- poetry run pytest tests/integrations/gateway -n $(nproc --all)
85
- env :
86
- SCW_ACCESS_KEY : ${{ secrets.SCW_ACCESS_KEY }}
87
- SCW_SECRET_KEY : ${{ secrets.SCW_SECRET_KEY }}
88
- GATEWAY_S3_BUCKET_NAME : ${{ secrets.GATEWAY_S3_BUCKET_NAME }}
89
-
90
- - name : Delete S3 bucket
91
- working-directory : ${{ env.GATEWAY_CHECKOUT_DIR }}
92
- run : make delete-bucket
93
- env :
94
- S3_BUCKET_NAME : ${{ secrets.GATEWAY_S3_BUCKET_NAME }}
95
- if : always()
96
-
97
- - name : Delete Gateway namespace and container
98
- working-directory : ${{ env.GATEWAY_CHECKOUT_DIR }}
99
- run : make delete-namespace
100
- if : always()
57
+ poetry run scwgw remote-config
58
+ poetry run pytest integrations/gateway -n $(nproc --all)
59
+
60
+ teardown-gateway :
61
+ runs-on : self-hosted
62
+ container : python:3.11-bookworm
63
+ needs :
64
+ - run-tests
65
+
66
+ # Tolerate errors if no resources found to clean up
67
+ continue-on-error : true
68
+
69
+ steps :
70
+ - uses : actions/checkout@v3
71
+
72
+ - uses : ./.github/actions/setup-poetry
73
+
74
+ - name : Delete namespace
75
+ run : poetry run scwgw delete-namespace
76
+
77
+ - name : Delete database
78
+ run : poetry run scwgw delete-db
0 commit comments