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.28 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/aaredb/backend
    - cd /home/gitlab-runner/builds/t3_38ooWt/0/mx/aaredb  # Change to the project root
    - #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
  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 $CI_PROJECT_DIR/backend  # Use GitLab-provided dynamic root path
    - python -m main              # Run the main module dynamically

release:
  stage: release
  when: manual
  variables:
    TWINE_USERNAME: gitlab-ci-token       # Keep username the 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
    - rm -f openapi.json || true
    - rm -rf python-client || true
    - bash make_openapi_client.sh        # Generate OpenAPI client and package
    - ls backend/python-client/dist/     # Debug artifacts to ensure files exist
    - pip install --upgrade build setuptools wheel twine