Sith/.gitlab-ci.yml

92 lines
2.3 KiB
YAML

stages:
- test
- deploy
# Installs and launch unittests
unittests:
stage: test
script:
# Install dependencies
- apt-get update
- apt-get install -y gettext libxapian-dev libgraphviz-dev
- pip install poetry
# Check pyproject.toml validity
- poetry check
# Install project
- poetry install -E testing -E docs
# Setup xapian index
- mkdir -p /dev/shm/search_indexes
- ln -s /dev/shm/search_indexes sith/search_indexes
# Setup project
- poetry run ./manage.py compilemessages
# Run tests and export report
- poetry run coverage run ./manage.py test
- poetry run coverage xml
- poetry run coverage report
# Build documentation
- cd doc
- poetry run make html
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip_tests"
cache:
paths:
- .cache/pip_tests
artifacts:
when: always
paths:
- coverage.xml
- coverage_report/
- docs/_build
reports:
junit: coverage.xml
# Check black
black:
stage: test
script:
- version=$(cat pyproject.toml | grep --color=never black | grep --color=never -oE '[0-9]([0-9.a-z]+)')
- pip install black==$version
- black --check .
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip_black"
cache:
paths:
- .cache/pip_black
deploy:
stage: deploy
before_script:
##
## Install ssh-agent if not already installed, it is required by Docker.
## (change apt-get to yum if you use an RPM-based image)
##
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
##
## Run ssh-agent (inside the build environment)
##
- eval $(ssh-agent -s)
##
## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
## We're using tr to fix line endings which makes ed25519 keys work
## without extra base64 encoding.
## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
##
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
##
## Create the SSH directory and give it the right permissions
##
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
script:
- ssh -o StrictHostKeyChecking=accept-new sith@ae-web $SITH_PROD_SCRIPT_PATH
environment:
name: prod
url: https://ae.utbm.fr
only:
refs:
- master
when: on_success