Skip to content

debug docker images #15

debug docker images

debug docker images #15

Workflow file for this run

name: GeoNode Test Suites
on: [push, workflow_dispatch]
jobs:
# -------------------------------------------------
# BUILD DOCKER IMAGES AND SHARE AS ARTIFACTS
# -------------------------------------------------
build_images:
name: Build and export Docker images
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build all services (Docker Compose v2)
run: |
docker compose --env-file .env_test -f docker-compose-test.yml build --progress plain
- name: List built images
run: docker images ls
# - name: Save built Docker images
# run: |
# mkdir -p docker_images
# docker save -o docker_images/django.tar geonode/geonode:latest-ubuntu-24.04
# docker save -o docker_images/geoserver.tar geonode/geoserver:2.24.4-latest
# docker save -o docker_images/db.tar geonode/postgis:15-3.5-latest || true
#
# - name: Upload Docker images as artifact
# uses: actions/upload-artifact@v4
# with:
# name: docker-images
# path: docker_images
# retention-days: 1 # automatically expires after 1 day
#
# geonode_test_suite_smoke:
# name: Test tests location
# needs: build_images
# runs-on: ubuntu-24.04
#
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
#
# - name: Download built Docker images
# uses: actions/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
#
# - name: Load Docker images
# run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# docker load -i docker_images/db.tar || true
# docker load -i docker_images/celery.tar || true
#
# - name: Start the stack
# run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
# working-directory: ${{ github.workspace }}
#
# - name: Wait for services to become healthy
# 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 (of $m)"
# if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then
# break
# fi
# docker ps
# n=$((n+1))
# done
# [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
# working-directory: ${{ github.workspace }}
#
# - name: Run smoke tests
# run: |
# docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -lc \
# "pwd && ls -all /usr/src/geonode"
# working-directory: ${{ github.workspace }}
#
# - name: Stop stack (always)
# if: always()
# run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# working-directory: ${{ github.workspace }}
# # -------------------------------------------------
# # SMOKE TESTS (BLOCKING)
# # -------------------------------------------------
# geonode_test_suite_smoke:
# name: Smoke Tests
# needs: build_images
# runs-on: ubuntu-24.04
#
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
#
# - name: Download built Docker images
# uses: actions/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
#
# - name: Load Docker images
# run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# docker load -i docker_images/db.tar || true
# docker load -i docker_images/celery.tar || true
#
# - name: Start the stack
# run: docker compose --env-file .env_test -f docker-compose-test.yml up -d
# working-directory: ${{ github.workspace }}
#
# - name: Wait for services to become healthy
# 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 (of $m)"
# if [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]; then
# break
# fi
# docker ps
# n=$((n+1))
# done
# [[ $DJANGO_STATUS == healthy && $GEOSERVER_STATUS == healthy ]]
# working-directory: ${{ github.workspace }}
#
# - name: Run smoke tests
# run: |
# docker compose --env-file .env_test -f docker-compose-test.yml exec django bash -lc \
# "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"
# working-directory: ${{ github.workspace }}
#
# - name: Stop stack (always)
# if: always()
# run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# working-directory: ${{ github.workspace }}
#
#
# # -------------------------------------------------
# # OTHER TEST SUITES (DEPEND ON SMOKE)
# # -------------------------------------------------
# geonode_test_suite:
# name: Main Tests
# needs: [build_images, geonode_test_suite_smoke]
# runs-on: ubuntu-24.04
#
# steps:
# - uses: actions/checkout@v4
# - uses: actions/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
# - run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# docker load -i docker_images/db.tar || true
# docker load -i docker_images/celery.tar || true
# - 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 -lc \
# "cd /usr/src/geonode && bash 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"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()
#
#
# 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/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
# - run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# - 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 -lc \
# "cd /usr/src/geonode && bash 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()
#
#
# 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/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
# - run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# - 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 -lc \
# "cd /usr/src/geonode && bash 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()
#
#
# 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/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
# - run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# - 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 -lc \
# "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"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()
#
#
# 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/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
# - run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# - 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 -lc \
# "cd /usr/src/geonode && bash 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()
#
#
# geonode_upload:
# name: Upload Tests
# needs: [build_images, geonode_test_suite_smoke]
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@v4
# - uses: actions/download-artifact@v4
# with:
# name: docker-images
# path: docker_images
# - run: |
# docker load -i docker_images/django.tar
# docker load -i docker_images/geoserver.tar
# - 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 -lc \
# "cd /usr/src/geonode && bash tests/test.sh geonode.upload"
# - run: docker compose --env-file .env_test -f docker-compose-test.yml down -v
# if: always()
#
#
# # -------------------------------------------------
# # CLEANUP JOB: REMOVE ALL ARTIFACTS AT THE END
# # -------------------------------------------------
# cleanup_artifacts:
# name: Cleanup Artifacts
# needs:
# - geonode_test_suite_smoke
# - geonode_test_suite
# - geonode_test_security
# - geonode_test_gis_backend
# - geonode_test_rest_apis
# - geonode_test_csw
# - geonode_upload
# runs-on: ubuntu-24.04
# if: always()
# steps:
# - name: Delete all uploaded artifacts
# uses: geekyeggo/delete-artifact@v5
# with:
# failOnError: false