Code indexing in gitaly is broken and leads to code not being visible to the user. We work on the issue with highest priority.

Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 2.08 KiB
# GitLab CI/CD Configuration for FastAPI
stages:
  - test
  - deploy
  - release

variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip_cache"
  VIRTUAL_ENV: ".venv"

# Cache for dependencies
cache:
  paths:
    - .pip_cache/

before_script: # common setup for every job
  - python3.12 -m venv $VIRTUAL_ENV
  - source $VIRTUAL_ENV/bin/activate
  - pip install --upgrade pip

test:
  stage: test
  script:
    - source $VIRTUAL_ENV/bin/activate
    - pip install -r requirements.txt
    - export PYTHONPATH=$PYTHONPATH:/home/gitlab-runner/builds/t3_38ooWt/0/mx/heidi-v2/backend
    - pytest --cov=app --cov-report=xml  # Run tests and generate coverage report

lint:
  stage: test
  script:
    - source $VIRTUAL_ENV/bin/activate
    - pip install pre-commit black flake8
    - >
      pre-commit run --all-files || { 
        echo "Pre-commit formatting failed. Auto-fixing formatting issues with black..." && 
        black backend/ && 
        exit 0; 
      }

deploy:
  stage: deploy
  only:
    - main
  variables:
    CI: "true"        # Mark this as a CI run
    ENVIRONMENT: test  # Use test environment settings
    PORT: 8081
  script:
    - echo "Setting up Python dependencies..."
    - source $VIRTUAL_ENV/bin/activate
    - pip install -r requirements.txt
    - echo "Starting the application to test startup with SSL..."
    - cd backend
    - python -m main  # App will start, validate, and exit
    - echo "Application startup validation completed successfully."

release:
  stage: release
  when: manual
  variables:
    TWINE_USERNAME: gitlab-ci-token       # Keep username same
    TWINE_PASSWORD: $CI_JOB_TOKEN        # Use PAT stored in GitLab CI/CD Variables
  script:
    - echo "Setting up Python dependencies..."
    - source $VIRTUAL_ENV/bin/activate
    - pip install -r requirements.txt
    - bash make_openapi_client.sh
    - cd backend/python-client            # Navigate to the folder where the package was generated
    - python -m venv .venv