Skip to content

Commit 9f154a0

Browse files
committed
Test for CI migration to Github Actions
1 parent 10d2773 commit 9f154a0

File tree

2 files changed

+188
-0
lines changed

2 files changed

+188
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: GeoNode Build & Test (Reusable)
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
test_suite:
7+
required: false
8+
type: string
9+
default: ""
10+
codecov_name:
11+
required: false
12+
type: string
13+
default: "default"
14+
15+
jobs:
16+
build:
17+
runs-on: ubuntu-24.04
18+
19+
steps:
20+
- uses: actions/checkout@v4
21+
22+
- name: Download build cache
23+
uses: actions/download-artifact@v4
24+
with:
25+
name: buildx-cache
26+
path: /tmp/.buildx-cache
27+
28+
- name: Load Docker cache
29+
run: |
30+
echo "Cache restored for this job:"
31+
du -sh /tmp/.buildx-cache || true
32+
33+
- name: Start stack
34+
run: docker-compose --env-file .env_test -f docker-compose-test.yml up -d
35+
36+
- name: Wait for services
37+
run: |
38+
n=1
39+
m=10
40+
until [ $n -gt $m ]
41+
do
42+
sleep 60
43+
DJANGO_STATUS=$(docker inspect --format='{{.State.Health.Status}}' django4geonode)
44+
GEOSERVER_STATUS=$(docker inspect --format='{{.State.Health.Status}}' geoserver4geonode)
45+
echo ""
46+
echo "Waited $n min (out of $m min)"
47+
if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then
48+
break
49+
fi
50+
echo "Not healthy yet..."
51+
docker ps
52+
n=$((n+1))
53+
done
54+
[[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
55+
56+
- name: Run tests
57+
if: ${{ inputs.test_suite != '' }}
58+
run: |
59+
docker-compose --env-file .env_test -f docker-compose-test.yml exec db psql -U postgres -c 'SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid();'
60+
docker-compose --env-file .env_test -f docker-compose-test.yml exec db createdb -U postgres -T postgres test_postgres
61+
docker-compose --env-file .env_test -f docker-compose-test.yml exec db createdb -U postgres -T postgres test_geonode
62+
docker-compose --env-file .env_test -f docker-compose-test.yml exec db createdb -U postgres -T postgres test_geonode_data
63+
docker-compose --env-file .env_test -f docker-compose-test.yml exec db psql -U postgres -d test_geonode -c 'CREATE EXTENSION IF NOT EXISTS postgis;'
64+
docker-compose --env-file .env_test -f docker-compose-test.yml exec db psql -U postgres -d test_geonode_data -c 'CREATE EXTENSION IF NOT EXISTS postgis;'
65+
docker-compose --env-file .env_test -f docker-compose-test.yml exec django bash -c "${{ inputs.test_suite }}"
66+
timeout-minutes: 10
67+
68+
- name: Upload to Codecov
69+
if: ${{ inputs.test_suite != '' }}
70+
run: |
71+
docker-compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
72+
"bash <(curl -s https://codecov.io/bash) -t 2c0e7780-1640-45f0-93a3-e103b057d8c8 -F ${{ inputs.codecov_name }}"
73+
74+
- name: Debug logs
75+
if: failure()
76+
run: |
77+
docker ps
78+
docker logs django4geonode --tail 1000 || true
79+
docker logs geoserver4geonode --tail 1000 || true
80+
docker logs celery4geonode --tail 1000 || true
81+
82+
- name: Stop the stack
83+
if: always()
84+
run: docker-compose --env-file .env_test -f docker-compose-test.yml down -v
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: GeoNode Test Suites
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
build_images:
8+
name: Build and cache Docker images
9+
runs-on: ubuntu-24.04
10+
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Set up Docker Buildx
15+
uses: docker/setup-buildx-action@v3
16+
17+
# Crea una chiave cache univoca per ogni run manuale
18+
- name: Define cache key
19+
id: cache-key
20+
run: echo "key=geonode-cache-${{ github.run_id }}" >> $GITHUB_OUTPUT
21+
22+
- name: Restore Docker layer cache
23+
uses: actions/cache@v4
24+
with:
25+
path: /tmp/.buildx-cache
26+
key: ${{ steps.cache-key.outputs.key }}
27+
28+
- name: Build stack (using cache)
29+
run: |
30+
docker-compose --env-file .env_test -f docker-compose-test.yml build \
31+
--build-arg BUILDKIT_INLINE_CACHE=1 \
32+
--progress plain
33+
env:
34+
DOCKER_BUILDKIT: 1
35+
BUILDKIT_CACHE: /tmp/.buildx-cache
36+
37+
- name: Export cache for next jobs
38+
if: always()
39+
run: |
40+
echo "Cache directory after build:"
41+
du -sh /tmp/.buildx-cache || true
42+
43+
- name: Upload build cache
44+
uses: actions/upload-artifact@v4
45+
with:
46+
name: buildx-cache
47+
path: /tmp/.buildx-cache
48+
49+
# Ogni job usa la cache e non rebuilda
50+
geonode_test_suite_smoke:
51+
name: Smoke Tests
52+
needs: build_images
53+
uses: ./.github/workflows/_geonode-build.yml
54+
with:
55+
codecov_name: smoke_tests
56+
test_suite: ./tests/test.sh geonode.tests.smoke geonode.tests.test_rest_api geonode.tests.test_search geonode.tests.test_utils geonode.tests.test_headers
57+
58+
geonode_test_suite:
59+
name: Main Tests
60+
needs: build_images
61+
uses: ./.github/workflows/_geonode-build.yml
62+
with:
63+
codecov_name: main_tests
64+
test_suite: ./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
65+
66+
geonode_test_security:
67+
name: Security Tests
68+
needs: build_images
69+
uses: ./.github/workflows/_geonode-build.yml
70+
with:
71+
codecov_name: security_tests
72+
test_suite: ./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]))")
73+
74+
geonode_test_gis_backend:
75+
name: GIS Backend Tests
76+
needs: build_images
77+
uses: ./.github/workflows/_geonode-build.yml
78+
with:
79+
codecov_name: gis
80+
test_suite: ./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]))")
81+
82+
geonode_test_rest_apis:
83+
name: REST API Tests
84+
needs: build_images
85+
uses: ./.github/workflows/_geonode-build.yml
86+
with:
87+
codecov_name: api
88+
test_suite: ./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
89+
90+
geonode_test_csw:
91+
name: CSW Tests
92+
needs: build_images
93+
uses: ./.github/workflows/_geonode-build.yml
94+
with:
95+
codecov_name: csw
96+
test_suite: ./tests/test.sh geonode.tests.csw geonode.catalogue.backends.tests
97+
98+
geonode_upload:
99+
name: Upload Tests
100+
needs: build_images
101+
uses: ./.github/workflows/_geonode-build.yml
102+
with:
103+
codecov_name: importer
104+
test_suite: ./tests/test.sh geonode.upload

0 commit comments

Comments
 (0)