Update es python, opensearch #1843
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: sfeos | ||
| on: | ||
| push: | ||
| branches: | ||
| - main | ||
| pull_request: | ||
| branches: | ||
| - main | ||
| - features/** | ||
| jobs: | ||
| test: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 20 | ||
| services: | ||
| elasticsearch_8_svc: | ||
| image: docker.elastic.co/elasticsearch/elasticsearch:8.19.5 | ||
| env: | ||
| cluster.name: stac-cluster | ||
| node.name: es01 | ||
| network.host: 0.0.0.0 | ||
| transport.host: 0.0.0.0 | ||
| discovery.type: single-node | ||
| http.port: 9200 | ||
| xpack.license.self_generated.type: basic | ||
| xpack.security.enabled: false | ||
| xpack.security.transport.ssl.enabled: false | ||
| ES_JAVA_OPTS: -Xms512m -Xmx1g | ||
| action.destructive_requires_name: false | ||
| ports: | ||
| - 9200:9200 | ||
| opensearch_2_12: | ||
| image: opensearchproject/opensearch:2.12.0 # Your upgrade target | ||
| env: | ||
| cluster.name: stac-cluster | ||
| node.name: os01 | ||
| network.host: 0.0.0.0 | ||
| transport.host: 0.0.0.0 | ||
| discovery.type: single-node | ||
| http.port: 9202 | ||
| http.cors.enabled: true | ||
| # Fully disable security plugin and its SSL | ||
| DISABLE_SECURITY_PLUGIN: true # New: Explicitly skips security init | ||
| DISABLE_INSTALL_DEMO_CONFIG: true # New: Skips demo certs/password setup | ||
| plugins.security.disabled: true | ||
| plugins.security.ssl.http.enabled: false # Fix: Disable HTTP SSL | ||
| OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m | ||
| action.destructive_requires_name: false | ||
| ports: | ||
| - 9202:9202 | ||
| # Optional: Add healthcheck for reliable startup (see below) | ||
| healthcheck: | ||
| test: ["CMD-SHELL", "curl -f http://localhost:9202 || exit 1"] # Plain HTTP test | ||
| interval: 10s | ||
| timeout: 5s | ||
| retries: 10 | ||
| start-period: 30s # Gives 30s grace for JVM boot | ||
| strategy: | ||
| matrix: | ||
| python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13"] | ||
| backend: [ "elasticsearch8", "opensearch"] | ||
| name: Python ${{ matrix.python-version }} testing with ${{ matrix.backend }} | ||
| steps: | ||
| - name: Check out repository code | ||
| uses: actions/checkout@v5 | ||
| - name: Setup Python | ||
| uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ matrix.python-version }} | ||
| cache: 'pip' | ||
| cache-dependency-path: | | ||
| **/setup.py | ||
| - name: Lint code | ||
| if: ${{ matrix.python-version == 3.11 }} | ||
| run: | | ||
| python -m pip install pre-commit | ||
| pre-commit run --all-files | ||
| - name: Install pipenv | ||
| run: | | ||
| python -m pip install --upgrade pipenv wheel | ||
| - name: Install core library stac-fastapi | ||
| run: | | ||
| pip install ./stac_fastapi/core | ||
| - name: Install helpers library stac-fastapi | ||
| run: | | ||
| pip install ./stac_fastapi/sfeos_helpers | ||
| - name: Install elasticsearch stac-fastapi | ||
| run: | | ||
| pip install ./stac_fastapi/elasticsearch[dev,server] | ||
| - name: Install opensearch stac-fastapi | ||
| run: | | ||
| pip install ./stac_fastapi/opensearch[dev,server] | ||
| - name: Install pytest-timeout | ||
| run: | | ||
| pip install pytest-timeout | ||
| - name: Run test suite | ||
| run: | | ||
| pipenv run pytest -svvv --timeout=300 | ||
| env: | ||
| ENVIRONMENT: testing | ||
| ES_PORT: ${{ matrix.backend == 'elasticsearch8' && '9200' || '9202' }} | ||
| ES_HOST: 172.17.0.1 | ||
| ES_USE_SSL: false | ||
| DATABASE_REFRESH: true | ||
| ES_VERIFY_CERTS: false | ||
| BACKEND: ${{ matrix.backend == 'elasticsearch8' && 'elasticsearch' || 'opensearch' }} | ||