11name : GeoNode Test Suites
22
3- on : [push, workflow_dispatch]
3+ on :
4+ push :
5+ branches :
6+ - main
7+ - 3.x
8+ workflow_dispatch :
49
510jobs :
611 # -------------------------
7- # BUILD IMMAGINI
12+ # BUILD IMAGES
813 # -------------------------
914 build_images :
1015 name : Build and cache Docker images
1722 - name : Set up Docker Buildx
1823 uses : docker/setup-buildx-action@v3
1924
20- # Cache condivisa tra job dello stesso run
25+ # Shared cache for all jobs within the same workflow run
2126 - name : Restore Docker build cache
2227 uses : actions/cache@v4
2328 with :
@@ -31,12 +36,13 @@ jobs:
3136 DOCKER_BUILDKIT : 1
3237
3338 # -------------------------
34- # TEMPLATE PER TUTTI I TEST JOB
39+ # SMOKE TESTS (MUST PASS FIRST)
3540 # -------------------------
3641 geonode_test_suite_smoke :
3742 name : Smoke Tests
3843 needs : build_images
3944 runs-on : ubuntu-22.04
45+
4046 steps :
4147 - uses : actions/checkout@v4
4248 - uses : actions/cache@v4
6975 docker compose --env-file .env_test -f docker-compose-test.yml exec db psql -U postgres -d test_geonode -c \
7076 "CREATE EXTENSION IF NOT EXISTS postgis;"
7177 docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
72- "./tests/test.sh geonode.tests.smoke geonode.tests.test_rest_api geonode.tests.test_search geonode.tests.test_utils geonode.tests.test_headers"
78+ "cd /usr/src/geonode && bash ./tests/test.sh geonode.tests.smoke geonode.tests.test_rest_api geonode.tests.test_search geonode.tests.test_utils geonode.tests.test_headers"
7379
7480 - name : Upload coverage to Codecov
7581 run : |
@@ -91,112 +97,94 @@ jobs:
9197 # -------------------------
9298 # MAIN TEST SUITE
9399 # -------------------------
94- geonode_test_suite :
95- name : Main Tests
96- needs : build_images
97- runs-on : ubuntu-22.04
98- steps :
99- - uses : actions/checkout@v4
100- - uses : actions/cache@v4
101- with :
102- path : /tmp/.buildx-cache
103- key : geonode-cache-${{ github.run_id }}
104-
105- - name : Start stack
106- run : docker compose --env-file .env_test -f docker-compose-test.yml up -d
107-
108- - name : Wait for services
109- run : |
110- n=1; m=10
111- until [ $n -gt $m ]; do
112- sleep 60
113- DJANGO_STATUS=$(docker inspect --format='{{.State.Health.Status}}' django4geonode)
114- GEOSERVER_STATUS=$(docker inspect --format='{{.State.Health.Status}}' geoserver4geonode)
115- echo "Waited $n min (out of $m)"
116- if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then break; fi
117- docker ps
118- n=$((n+1))
119- done
120- [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
121-
122- - name : Run main test suite
123- run : |
124- docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
125- "./tests/test.sh $(python -c \"import sys;from geonode import settings;sys.stdout.write(' '.join([a+'.tests' for a in settings.GEONODE_APPS if 'security' not in a and 'geoserver' not in a and 'upload' not in a]))\") geonode.thumbs.tests geonode.people.tests geonode.people.socialaccount.providers.geonode_openid_connect.tests"
126-
127- - name : Upload coverage
128- run : |
129- docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
130- "bash <(curl -s https://codecov.io/bash) -t 2c0e7780-1640-45f0-93a3-e103b057d8c8 -F main_tests"
131-
132- - name : Stop stack
133- if : always()
134- run : docker compose --env-file .env_test -f docker-compose-test.yml down -v
135-
136- # -------------------------
137- # SECURITY TESTS
138- # -------------------------
139- geonode_test_security :
140- name : Security Tests
141- needs : build_images
142- runs-on : ubuntu-22.04
143- steps :
144- - uses : actions/checkout@v4
145- - uses : actions/cache@v4
146- with :
147- path : /tmp/.buildx-cache
148- key : geonode-cache-${{ github.run_id }}
149- - run : docker compose --env-file .env_test -f docker-compose-test.yml up -d
150- - run : |
151- docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
152- "./tests/test.sh $(python -c \"import sys;from geonode import settings;sys.stdout.write(' '.join([a+'.tests' for a in settings.GEONODE_APPS if 'security' in a]))\")"
153- - run : docker compose --env-file .env_test -f docker-compose-test.yml down -v
154- if : always()
155-
156- # -------------------------
157- # GIS BACKEND TESTS
158- # -------------------------
159- geonode_test_gis_backend :
160- name : GIS Backend Tests
161- needs : build_images
162- runs-on : ubuntu-22.04
163- steps :
164- - uses : actions/checkout@v4
165- - uses : actions/cache@v4
166- with :
167- path : /tmp/.buildx-cache
168- key : geonode-cache-${{ github.run_id }}
169- - run : docker compose --env-file .env_test -f docker-compose-test.yml up -d
170- - run : docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
171- " ./tests/test.sh $(python -c \" import sys;from geonode import settings;sys.stdout.write(' '.join([a+'.tests' for a in settings.GEONODE_APPS if 'geoserver' in a]))\" )"
172- - run : docker compose --env-file .env_test -f docker-compose-test.yml down -v
173- if : always()
100+ # geonode_test_suite:
101+ # name: Main Tests
102+ # needs: [build_images, geonode_test_suite_smoke] # run only if smoke passed
103+ # runs-on: ubuntu-22.04
104+ #
105+ # steps:
106+ # - uses: actions/checkout@v4
107+ # - uses: actions/cache@v4
108+ # with:
109+ # path: /tmp/.buildx-cache
110+ # key: geonode-cache-${{ github.run_id }}
111+ #
112+ # - name: Start stack
113+ # run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
114+ #
115+ # - name: Wait for services
116+ # run: |
117+ # n=1; m=10
118+ # until [ $n -gt $m ]; do
119+ # sleep 60
120+ # DJANGO_STATUS=$(docker inspect --format='{{.State.Health.Status}}' django4geonode)
121+ # GEOSERVER_STATUS=$(docker inspect --format='{{.State.Health.Status}}' geoserver4geonode)
122+ # echo "Waited $n min (out of $m)"
123+ # if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then break; fi
124+ # docker ps
125+ # n=$((n+1))
126+ # done
127+ # [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
128+ #
129+ # - name: Run main test suite
130+ # run: |
131+ # docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
132+ # "./tests/test.sh $(python -c \"import sys;from geonode import settings;sys.stdout.write(' '.join([a+'.tests' for a in settings.GEONODE_APPS if 'security' not in a and 'geoserver' not in a and 'upload' not in a]))\") geonode.thumbs.tests geonode.people.tests geonode.people.socialaccount.providers.geonode_openid_connect.tests"
133+ #
134+ # - name: Upload coverage
135+ # run: |
136+ # docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
137+ # "bash <(curl -s https://codecov.io/bash) -t 2c0e7780-1640-45f0-93a3-e103b057d8c8 -F main_tests"
138+ #
139+ # - name: Stop stack
140+ # if: always()
141+ # run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
142+
143+ # # -------------------------
144+ # # SECURITY TESTS
145+ # # -------------------------
146+ # geonode_test_security:
147+ # name: Security Tests
148+ # needs: [build_images, geonode_test_suite_smoke]
149+ # runs-on: ubuntu-22.04
150+ # steps:
151+ # - uses: actions/checkout@v4
152+ # - uses: actions/cache@v4
153+ # with:
154+ # path: /tmp/.buildx-cache
155+ # key: geonode-cache-${{ github.run_id }}
156+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
157+ # - run: |
158+ # docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
159+ # "./tests/test.sh $(python -c \"import sys;from geonode import settings;sys.stdout.write(' '.join([a+'.tests' for a in settings.GEONODE_APPS if 'security' in a]))\")"
160+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
161+ # if: always()
162+ #
163+ # # -------------------------
164+ # # GIS BACKEND TESTS
165+ # # -------------------------
166+ # geonode_test_gis_backend:
167+ # name: GIS Backend Tests
168+ # needs: [build_images, geonode_test_suite_smoke]
169+ # runs-on: ubuntu-22.04
170+ # steps:
171+ # - uses: actions/checkout@v4
172+ # - uses: actions/cache@v4
173+ # with:
174+ # path: /tmp/.buildx-cache
175+ # key: geonode-cache-${{ github.run_id }}
176+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
177+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
178+ # "./tests/test.sh $(python -c \"import sys;from geonode import settings;sys.stdout.write(' '.join([a+'.tests' for a in settings.GEONODE_APPS if 'geoserver' in a]))\")"
179+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
180+ # if: always()
174181
175182 # -------------------------
176183 # REST API TESTS
177184 # -------------------------
178185 geonode_test_rest_apis :
179186 name : REST API Tests
180- needs : build_images
181- runs-on : ubuntu-22.04
182- steps :
183- - uses : actions/checkout@v4
184- - uses : actions/cache@v4
185- with :
186- path : /tmp/.buildx-cache
187- key : geonode-cache-${{ github.run_id }}
188- - run : docker compose --env-file .env_test -f docker-compose-test.yml up -d
189- - run : docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
190- " ./tests/test.sh geonode.api.tests geonode.base.api.tests geonode.layers.api.tests geonode.maps.api.tests geonode.documents.api.tests geonode.geoapps.api.tests"
191- - run : docker compose --env-file .env_test -f docker-compose-test.yml down -v
192- if : always()
193-
194- # -------------------------
195- # CSW TESTS
196- # -------------------------
197- geonode_test_csw :
198- name : CSW Tests
199- needs : build_images
187+ needs : [build_images, geonode_test_suite_smoke]
200188 runs-on : ubuntu-22.04
201189 steps :
202190 - uses : actions/checkout@v4
@@ -206,25 +194,44 @@ jobs:
206194 key : geonode-cache-${{ github.run_id }}
207195 - run : docker compose --env-file .env_test -f docker-compose-test.yml up -d
208196 - run : docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
209- " ./tests/test.sh geonode.tests.csw geonode.catalogue.backends .tests"
197+ " cd /usr/src/geonode && bash ./tests/test.sh geonode.api. tests geonode.base.api.tests geonode.layers.api.tests geonode.maps.api.tests geonode.documents.api.tests geonode.geoapps.api .tests"
210198 - run : docker compose --env-file .env_test -f docker-compose-test.yml down -v
211199 if : always()
212200
213- # -------------------------
214- # UPLOAD TESTS
215- # -------------------------
216- geonode_upload :
217- name : Upload Tests
218- needs : build_images
219- runs-on : ubuntu-22.04
220- steps :
221- - uses : actions/checkout@v4
222- - uses : actions/cache@v4
223- with :
224- path : /tmp/.buildx-cache
225- key : geonode-cache-${{ github.run_id }}
226- - run : docker compose --env-file .env_test -f docker-compose-test.yml up -d
227- - run : docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
228- " ./tests/test.sh geonode.upload"
229- - run : docker compose --env-file .env_test -f docker-compose-test.yml down -v
230- if : always()
201+ # # -------------------------
202+ # # CSW TESTS
203+ # # -------------------------
204+ # geonode_test_csw:
205+ # name: CSW Tests
206+ # needs: [build_images, geonode_test_suite_smoke]
207+ # runs-on: ubuntu-22.04
208+ # steps:
209+ # - uses: actions/checkout@v4
210+ # - uses: actions/cache@v4
211+ # with:
212+ # path: /tmp/.buildx-cache
213+ # key: geonode-cache-${{ github.run_id }}
214+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
215+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
216+ # "./tests/test.sh geonode.tests.csw geonode.catalogue.backends.tests"
217+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
218+ # if: always()
219+ #
220+ # # -------------------------
221+ # # UPLOAD TESTS
222+ # # -------------------------
223+ # geonode_upload:
224+ # name: Upload Tests
225+ # needs: [build_images, geonode_test_suite_smoke]
226+ # runs-on: ubuntu-22.04
227+ # steps:
228+ # - uses: actions/checkout@v4
229+ # - uses: actions/cache@v4
230+ # with:
231+ # path: /tmp/.buildx-cache
232+ # key: geonode-cache-${{ github.run_id }}
233+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
234+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
235+ # "./tests/test.sh geonode.upload"
236+ # - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
237+ # if: always()
0 commit comments