diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c99e56edd53af000202ced3214a21814dbc4a36a..35e26210a7c3bb1467c6313b9ce6757868873281 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,37 +3,56 @@ stages: - test - run +image: python:3.9 + variables: VIRTUAL_ENV: .venv - PATH: $VIRTUAL_ENV/Scripts:$PATH + PATH: $VIRTUAL_ENV/bin:$PATH + DATABASE_HOST: mysql + DATABASE_USERNAME: root + DATABASE_PASSWORD: root + +services: + - mysql:8.0 before_script: - python --version - pip --version # Create virtual environment - python -m venv $VIRTUAL_ENV + - source $VIRTUAL_ENV/bin/activate - pip install --upgrade pip - pip install -r requirements.txt - # Copy environment file - - cp .env.example .env - # Wait for MySQL (optional if already running) - - until mysqladmin ping -h"$DATABASE_HOST" --silent; do echo "Waiting for MySQL..."; sleep 2; done - # Optionally create database if it doesn't exist - - | - mysql -h"$DATABASE_HOST" -u"$DATABASE_USERNAME" -p"$DATABASE_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS shopping;" + # Copy environment file if exists + - if [ -f .env.example ]; then cp .env.example .env; fi + # Wait for MySQL + - apt-get update && apt-get install -y default-mysql-client + - until mysql -h"$DATABASE_HOST" -u"$DATABASE_USERNAME" -p"$DATABASE_PASSWORD" -e "SELECT 1"; do echo "Waiting for MySQL..."; sleep 2; done + # Create database if it doesn't exist + - mysql -h"$DATABASE_HOST" -u"$DATABASE_USERNAME" -p"$DATABASE_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS shopping;" install_dependencies: stage: install script: - echo "Dependencies installed." + artifacts: + paths: + - $VIRTUAL_ENV/ + expire_in: 1 hour test: stage: test script: + - source $VIRTUAL_ENV/bin/activate - pytest + dependencies: + - install_dependencies run_app: stage: run script: + - source $VIRTUAL_ENV/bin/activate - python run_app.py when: manual + dependencies: + - install_dependencies