62 lines
1.6 KiB
YAML
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 |