diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index de20294..359487b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,22 +1,41 @@ + + name: Tests -on: [push, pull_request] +on: + push: + pull_request: + workflow_dispatch: + jobs: test: - runs-on: ubuntu-latest + strategy: + matrix: + include: #ckan-image see https://github.com/ckan/ckan-docker-base, ckan-version controls other image tags + - ckan-version: "2.9" + ckan-image: "2.9-py3.9" + solr-image: "2.9-solr8" + experimental: false + - ckan-version: "2.10" + ckan-image: "2.10-py3.10" + solr-image: "2.10-solr8" + experimental: false + fail-fast: false + + runs-on: ubuntu-22.04 container: - # The CKAN version tag of the Solr and Postgres containers should match - # the one of the container the tests run on. - # You can switch this base image with a custom image tailored to your project - image: openknowledge/ckan-dev:2.9 + image: ckan/ckan-dev:${{ matrix.ckan-image }} + options: --user root services: solr: - image: ckan/ckan-solr-dev:2.9 + image: ckan/ckan-solr:${{ matrix.solr-image }} postgres: - image: ckan/ckan-postgres-dev:2.9 + image: ckan/ckan-postgres-dev:${{ matrix.ckan-version }} env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres + ports: + - 5432:5432 options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis:3 @@ -29,20 +48,48 @@ jobs: CKAN_REDIS_URL: redis://redis:6379/1 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 + continue-on-error: ${{ matrix.experimental }} + + - name: Pin setuptools for ckan 2.9 only + if: ${{ matrix.ckan-version == 2.9 }} + run: pip install "setuptools>=44.1.0,<71" + continue-on-error: ${{ matrix.experimental }} + - name: Install requirements # Install any extra requirements your extension has here (dev requirements, other extensions etc) run: | pip install -r requirements.txt pip install -r dev-requirements.txt pip install -e . - - name: Setup extension - # Extra initialization steps - run: | + pip install -U requests[security] # Replace default path to CKAN core config file with the one on the container sed -i -e 's/use = config:.*/use = config:\/srv\/app\/src\/ckan\/test-core.ini/' test.ini + - name: Setup extension + continue-on-error: ${{ matrix.experimental }} + run: | ckan -c test.ini db init + + + - name: Install curl + run: apt-get update && apt-get install -y curl + + - name: Check Solr + run: | + echo "Checking Solr core status..." + curl -f http://solr:8983/solr/admin/cores?action=STATUS || echo "Solr core status failed" + echo "Checking schema.xml..." + curl -f -s "http://solr:8983/solr/ckan/admin/file?file=schema.xml" || echo "schema.xml not found" + + + - name: Fetch Solr logs + run: docker logs $(docker ps -qf "ancestor=ckan/ckan-solr:${{ matrix.ckan-version }}-solr9") || true + + + - name: Run tests - run: pytest --ckan-ini=test.ini --cov=ckanext.dcatapcrc --disable-warnings ckanext/dcatapcrc + continue-on-error: ${{ matrix.experimental }} + run: pytest --ckan-ini=test.ini --cov=ckanext.dcatapcrc --disable-warnings ckanext/dcatapcrc --junit-xml=/tmp/artifacts/junit/results.xml + diff --git a/README.md b/README.md index 9ba0cff..a5a5191 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Tests](https://github.com//ckanext-dcatapcrc/workflows/Tests/badge.svg?branch=main)](https://github.com//ckanext-dcatapcrc/actions) +[![CI](https://github.com/TIBHannover/ckanext-dcatapcrc/actions/workflows/test.yml/badge.svg)](https://github.com/TIBHannover/ckanext-dcatapcrc/actions/workflows/test.yml) # ckanext-dcatapcrc