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