name: CI on: pull_request: branches: - develop workflow_dispatch: jobs: test: runs-on: ubuntu-latest services: postgres: image: postgres:16 env: POSTGRES_USER: ${{ vars.POSTGRES_USER }} POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} POSTGRES_DB: ${{ vars.POSTGRES_DB }} ports: - ${{ vars.POSTGRES_PORT}}:5432 options: >- --health-cmd="pg_isready -U postgres" --health-interval=10s --health-timeout=5s --health-retries=5 #redis: # image: redis:7 # ports: # - 6379:6379 # options: >- # --health-cmd "redis-cli ping" # --health-interval=10s # --health-timeout=5s # --health-retries=5 env: RUNNER_TOOL_CACHE: /toolcache EP_DATA_DIR: /opt/enviPy/ ALLOWED_HOSTS: 127.0.0.1,localhost DEBUG: True LOG_LEVEL: DEBUG MODEL_BUILDING_ENABLED: True APPLICABILITY_DOMAIN_ENABLED: True ENVIFORMER_PRESENT: True ENVIFORMER_DEVICE: cpu FLAG_CELERY_PRESENT: False PLUGINS_ENABLED: True SERVER_URL: http://localhost:8000 ADMIN_APPROVAL_REQUIRED: True REGISTRATION_MANDATORY: True LOG_DIR: '' # DB POSTGRES_SERVICE_NAME: postgres POSTGRES_DB: ${{ vars.POSTGRES_DB }} POSTGRES_USER: ${{ vars.POSTGRES_USER }} POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} POSTGRES_PORT: 5432 # SENTRY SENTRY_ENABLED: False # MS ENTRA MS_ENTRA_ENABLED: False steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install system tools via apt run: | sudo apt-get update sudo apt-get install -y postgresql-client redis-tools openjdk-11-jre-headless - name: Setup ssh run: | echo "${{ secrets.ENVIPY_CI_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan git.envipath.com >> ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519 - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: "pnpm" - name: Install uv uses: astral-sh/setup-uv@v6 with: enable-cache: true - name: Setup venv run: | uv sync --locked --all-extras --dev - name: Wait for services run: | until pg_isready -h postgres -U postgres; do sleep 2; done # until redis-cli -h redis ping; do sleep 2; done - name: Run Django migrations run: | source .venv/bin/activate python manage.py migrate --noinput - name: Run Django tests run: | source .venv/bin/activate python manage.py test tests --exclude-tag slow