Skip to content

no cache folder and verify running context #10

no cache folder and verify running context

no cache folder and verify running context #10

Workflow file for this run

name: GeoNode Test Suites
on: [push, workflow_dispatch]
jobs:
# -------------------------
# BUILD IMAGES
# -------------------------
build_images:
name: Build and cache Docker images
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Shared cache for all jobs within the same workflow run
- name: Restore Docker build cache
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: geonode-cache-${{ github.run_id }}
- name: Build the stack (Docker Compose v2)
run: |
docker compose --env-file .env_test -f docker-compose-test.yml build --progress plain
env:
BUILDKIT_CACHE: /tmp/.buildx-cache
DOCKER_BUILDKIT: 1
# -------------------------
# TEST test runner
# -------------------------
geonode_test_suite_smoke:
name: Smoke Tests
needs: build_images
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: geonode-cache-${{ github.run_id }}
- name: Start stack
run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
- name: Wait for services
run: |
n=1; m=10
until [ $n -gt $m ]; do
sleep 60
DJANGO_STATUS=$(docker inspect --format='{{.State.Health.Status}}' django4geonode)
GEOSERVER_STATUS=$(docker inspect --format='{{.State.Health.Status}}' geoserver4geonode)
echo "Waited $n min (out of $m)"
if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then break; fi
docker ps
n=$((n+1))
done
[[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
- name: Run smoke tests
run: |
docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -lc "pwd && ls -lah /usr/src/geonode || true"
# # -------------------------
# # SMOKE TESTS (MUST PASS FIRST)
# # -------------------------
# geonode_test_suite_smoke:
# name: Smoke Tests
# needs: build_images
# runs-on: ubuntu-24.04
#
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: /tmp/.buildx-cache
# key: geonode-cache-${{ github.run_id }}
#
# - name: Start stack
# run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
#
# - name: Wait for services
# run: |
# n=1; m=10
# until [ $n -gt $m ]; do
# sleep 60
# DJANGO_STATUS=$(docker inspect --format='{{.State.Health.Status}}' django4geonode)
# GEOSERVER_STATUS=$(docker inspect --format='{{.State.Health.Status}}' geoserver4geonode)
# echo "Waited $n min (out of $m)"
# if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then break; fi
# docker ps
# n=$((n+1))
# done
# [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
#
# - name: Run smoke tests
# run: |
# 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();"
# docker compose --env-file .env_test -f docker-compose-test.yml exec db createdb -U postgres -T postgres test_geonode
# 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;"
# docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "./tests/test.sh geonode.tests.smoke geonode.tests.test_rest_api geonode.tests.test_search geonode.tests.test_utils geonode.tests.test_headers"
# - name: Upload coverage to Codecov
# run: |
# docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "bash <(curl -s https://codecov.io/bash) -t 2c0e7780-1640-45f0-93a3-e103b057d8c8 -F smoke_tests"
- name: Show logs (on fail)
if: failure()
run: |
docker ps
docker logs django4geonode --tail 1000 || true
docker logs geoserver4geonode --tail 1000 || true
docker logs celery4geonode --tail 1000 || true
- name: Stop stack
if: always()
run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# -------------------------
# MAIN TEST SUITE
# -------------------------
# geonode_test_suite:
# name: Main Tests
# needs: [build_images, geonode_test_suite_smoke] # run only if smoke passed
# runs-on: ubuntu-24.04
#
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: /tmp/.buildx-cache
# key: geonode-cache-${{ github.run_id }}
#
# - name: Start stack
# run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
#
# - name: Wait for services
# run: |
# n=1; m=10
# until [ $n -gt $m ]; do
# sleep 60
# DJANGO_STATUS=$(docker inspect --format='{{.State.Health.Status}}' django4geonode)
# GEOSERVER_STATUS=$(docker inspect --format='{{.State.Health.Status}}' geoserver4geonode)
# echo "Waited $n min (out of $m)"
# if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then break; fi
# docker ps
# n=$((n+1))
# done
# [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
#
# - name: Run main test suite
# run: |
# docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "./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"
#
# - name: Upload coverage
# run: |
# docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "bash <(curl -s https://codecov.io/bash) -t 2c0e7780-1640-45f0-93a3-e103b057d8c8 -F main_tests"
#
# - name: Stop stack
# if: always()
# run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# # -------------------------
# # SECURITY TESTS
# # -------------------------
# geonode_test_security:
# name: Security Tests
# needs: [build_images, geonode_test_suite_smoke]
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: /tmp/.buildx-cache
# key: geonode-cache-${{ github.run_id }}
# - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
# - run: |
# docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "./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]))\")"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()
#
# # -------------------------
# # GIS BACKEND TESTS
# # -------------------------
# geonode_test_gis_backend:
# name: GIS Backend Tests
# needs: [build_images, geonode_test_suite_smoke]
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: /tmp/.buildx-cache
# key: geonode-cache-${{ github.run_id }}
# - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
# - run: docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "./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]))\")"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()
# # -------------------------
# # REST API TESTS
# # -------------------------
# geonode_test_rest_apis:
# name: REST API Tests
# needs: [build_images, geonode_test_suite_smoke]
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: /tmp/.buildx-cache
# key: geonode-cache-${{ github.run_id }}
# - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
# - run: docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "./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"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()
# # -------------------------
# # CSW TESTS
# # -------------------------
# geonode_test_csw:
# name: CSW Tests
# needs: [build_images, geonode_test_suite_smoke]
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: /tmp/.buildx-cache
# key: geonode-cache-${{ github.run_id }}
# - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
# - run: docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "./tests/test.sh geonode.tests.csw geonode.catalogue.backends.tests"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()
#
# # -------------------------
# # UPLOAD TESTS
# # -------------------------
# geonode_upload:
# name: Upload Tests
# needs: [build_images, geonode_test_suite_smoke]
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache@v4
# with:
# path: /tmp/.buildx-cache
# key: geonode-cache-${{ github.run_id }}
# - run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
# - run: docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -c \
# "./tests/test.sh geonode.upload"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()