mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-04 12:51:50 +02:00
66 lines
2.4 KiB
YAML
66 lines
2.4 KiB
YAML
stages:
|
|
- test
|
|
- docker
|
|
- deploy
|
|
|
|
tests:
|
|
stage: test
|
|
image: python:3.11
|
|
variables:
|
|
DJANGO_SETTINGS_MODULE: "la_chariotte.settings"
|
|
DB_NAME: "postgres"
|
|
DB_USER: "postgres"
|
|
DB_PASSWORD: "mysecretpassword"
|
|
DB_HOST: "postgres"
|
|
DB_PORT: "5432"
|
|
POSTGRES_HOST_AUTH_METHOD: "trust"
|
|
services:
|
|
- postgres:13
|
|
script:
|
|
- export CACHE_PATH="/venvs/${CI_PROJECT_NAME}/$(date +week-%V-%Y)"
|
|
- if [[ "$CI_COMMIT_BRANCH" == *"--no-cache"* ]] ; then export CACHE_PATH="/venvs/$CI_COMMIT_SHORT_SHA"; fi
|
|
- echo "Creating virtual env..."
|
|
- if [ ! -d $CACHE_PATH/venv ] ; then python3.11 -m venv $CACHE_PATH/venv ; fi
|
|
- $CACHE_PATH/venv/bin/pip install --upgrade pip
|
|
- echo "Virtual env created."
|
|
- echo "Running tests..."
|
|
- source $CACHE_PATH/venv/bin/activate
|
|
- pip cache purge
|
|
- pip install -U -r requirements.txt
|
|
- pip install -U -r dev-requirements.txt
|
|
- pytest --create-db --cov --cov-report=xml
|
|
- if [ "$CI_COMMIT_REF_NAME" = 'main' ] ; then exit 0 ; fi
|
|
- if [ "$CI_COMMIT_REF_NAME" = 'develop' ] ; then git fetch origin main ; diff-cover coverage.xml --fail-under=90 --compare-branch origin/main --diff-range-notation '..' && exit 0 ; fi
|
|
- git fetch origin develop ; diff-cover coverage.xml --fail-under=90 --compare-branch origin/develop --diff-range-notation '..'
|
|
- echo "Tests done."
|
|
|
|
build_docker_and_publish:
|
|
stage: docker
|
|
only:
|
|
- main
|
|
- develop
|
|
image: docker:git
|
|
tags:
|
|
- dind
|
|
services:
|
|
- docker:dind
|
|
script:
|
|
- docker build --pull --no-cache -f Dockerfile -t $CI_REGISTRY/hashbangfr/la_chariotte:${CI_COMMIT_REF_NAME}-latest .
|
|
- docker tag $CI_REGISTRY/hashbangfr/la_chariotte:${CI_COMMIT_REF_NAME}-latest $CI_REGISTRY/hashbangfr/la_chariotte:${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}
|
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
|
- docker push $CI_REGISTRY/hashbangfr/la_chariotte:${CI_COMMIT_REF_NAME}-latest
|
|
- docker push $CI_REGISTRY/hashbangfr/la_chariotte:${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}
|
|
|
|
ansible:
|
|
only:
|
|
refs:
|
|
- main
|
|
- develop
|
|
stage: deploy
|
|
image: $CI_REGISTRY/hashbangfr/docker_archlinux:ansible
|
|
tags:
|
|
- ansible
|
|
script:
|
|
- cd /srv/ansible/
|
|
- ansible-playbook ./playbooks/hb_chariotte/play-${CI_COMMIT_REF_NAME}.yml --extra-vars="CI_COMMIT_SHORT_SHA=${CI_COMMIT_SHORT_SHA}"
|
|
|