aaredb/.gitlab-ci.yml
2024-12-16 11:26:17 +01:00

62 lines
1.6 KiB
YAML

# 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.8 -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
script:
- echo "Updating repository..."
- git pull origin main # Update the repository with the latest code
- echo "Setting up Python dependencies..."
- source $VIRTUAL_ENV/bin/activate
- pip install -r requirements.txt # Install the required Python dependencies
- bash ./make_openapi_client.sh # Re-generate OpenAPI client library
- echo "Running the application..."
- python3.8 -m main # Replace with the exact command to start your app
release:
stage: release
when: manual
variables:
TWINE_USERNAME: gitlab-ci-token
TWINE_PASSWORD: $CI_JOB_TOKEN
script:
- bash make_openapi_client.sh