# # This file is a part of the CaosDB Project. # # Copyright (C) 2018 Research Group Biomedical Physics, # Max-Planck-Institute for Dynamics and Self-Organization Göttingen # Copyright (C) 2019 Henrik tom Wörden # Copyright (C) 2020 Indiscale GmbH <info@indiscale.com> # Copyright (C) 2020 Daniel Hornung <d.hornung@indiscale.com> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. variables: CI_REGISTRY_IMAGE: $CI_REGISTRY/caosdb/src/caosdb-advanced-user-tools/testenv:latest CI_REGISTRY_IMAGE_BASE: $CI_REGISTRY/caosdb/src/caosdb-advanced-user-tools/base:latest stages: - setup - cert - style - unittest - integrationtest - deploy test: tags: [docker] services: - docker:20.10.5-dind variables: # This is a workaround for the gitlab-runner health check mechanism when # using docker-dind service. The runner will otherwise guess the port # wrong and the health check will timeout. SERVICE_PORT_2376_TCP_PORT: 2375 stage: integrationtest image: $CI_REGISTRY_IMAGE_BASE script: - if [[ "$CAOSDB_TAG" == "" ]]; then CAOSDB_TAG=dev; fi - echo $CAOSDB_TAG - time docker load < /image-cache/caosdb-advanced-testenv.tar || true - time docker load < /image-cache/mariadb.tar || true - time docker load < /image-cache/caosdb-dev.tar || true - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - EXEPATH=`pwd` CAOSDB_TAG=$CAOSDB_TAG docker-compose -f .docker/docker-compose.yml up -d - cd .docker - /bin/sh ./run.sh - cd .. - docker logs docker-caosdb-server-1 &> caosdb_log.txt - docker logs docker-sqldb-1 &> mariadb_log.txt - docker-compose -f .docker/docker-compose.yml down - rc=`cat .docker/result` - exit $rc dependencies: [cert] needs: [cert] artifacts: paths: - caosdb_log.txt - mariadb_log.txt when: on_failure expire_in: 1 week build-testenv: tags: [cached-dind] image: docker:18.09 stage: setup # Hint: do not use only here; the image needs always to be build since it # contains the repo code #only: script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY # use here general latest or specific branch latest... - docker build --file .docker/Dockerfile -t $CI_REGISTRY_IMAGE . - docker push $CI_REGISTRY_IMAGE - docker save $CI_REGISTRY_IMAGE > /image-cache/caosdb-advanced-testenv.tar - cd .docker-base - docker build -t $CI_REGISTRY_IMAGE_BASE . - docker push $CI_REGISTRY_IMAGE_BASE cert: tags: [docker] stage: cert image: $CI_REGISTRY_IMAGE needs: [build-testenv] artifacts: paths: - .docker/cert/ expire_in: 1 week script: - cd .docker - CAOSHOSTNAME=caosdb-server ./cert.sh style: tags: [docker] stage: style image: $CI_REGISTRY_IMAGE needs: [build-testenv] script: - make style allow_failure: true linting: tags: [docker] stage: style image: $CI_REGISTRY_IMAGE needs: [build-testenv] script: - make lint allow_failure: true unittest_py39: tags: [docker] stage: unittest image: $CI_REGISTRY_IMAGE needs: [build-testenv] script: # First verify that system Python actually is 3.9 - python3 -c "import sys; assert sys.version.startswith('3.9')" - python3 -c "import linkahead; print('LinkAhead Version:', linkahead.__version__)" - tox unittest_py38: tags: [docker] stage: unittest image: python:3.8 script: &python_test_script - pip install pynose pandas pytest pytest-cov gitignore-parser openpyxl>=3.0.7 xlrd==1.2 h5py - pip install git+https://gitlab.indiscale.com/caosdb/src/caosdb-pylib.git@dev - pip install . - pytest --cov=caosadvancedtools unittests unittest_py310: tags: [docker] stage: unittest image: python:3.10 script: *python_test_script unittest_py311: tags: [docker] stage: unittest image: python:3.11 script: *python_test_script unittest_py312: tags: [docker] stage: unittest image: python:3.12 script: *python_test_script unittest_py313: tags: [docker] stage: unittest image: python:3.13-rc script: # TODO: Replace by '*python_test_script' as soon as 3.13 has been officially released. - apt update && apt install -y cargo - pip install meson[ninja] meson-python - pip install pynose pandas pytest pytest-cov gitignore-parser openpyxl>=3.0.7 xlrd==1.2 h5py - pip install git+https://gitlab.indiscale.com/caosdb/src/caosdb-pylib.git@dev - pip install . - pytest --cov=caosadvancedtools unittests || true # Build the sphinx documentation and make it ready for deployment by Gitlab Pages # Special job for serving a static website. See https://docs.gitlab.com/ee/ci/yaml/README.html#pages pages_prepare: &pages_prepare tags: [docker] image: $CI_REGISTRY_IMAGE stage: deploy only: refs: - /^release-.*$/ script: - echo "Deploying" - make doc - cp -r build/doc/html public artifacts: paths: - public pages: <<: *pages_prepare only: refs: # version tags: v0.1.1 - /^v(\d+\.\d+\.\d+)$/