diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cfd7fea4774e5a05ed5b2a322955e748b19ab8ea..55e3f6938b56ea972a53058155c357411082371b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ # # Copyright (C) 2018 Research Group Biomedical Physics, # Max-Planck-Institute for Dynamics and Self-Organization Göttingen +# Copyright (C) 2019 Henrik tom Wörden # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -22,71 +23,68 @@ # variables: - CI_REGISTRY_IMAGE: $CI_REGISTRY/caosdb-pylib-testenv - # When using dind service we need to instruct docker, to talk with the - # daemon started inside of the service. The daemon is available with - # a network connection instead of the default /var/run/docker.sock socket. - # - # The 'docker' hostname is the alias of the service container as described at - # https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#accessing-the-services - # - # Note that if you're using the Kubernetes executor, the variable should be set to - # tcp://localhost:2375/ because of how the Kubernetes executor connects services - # to the job container - # DOCKER_HOST: tcp://localhost:2375/ - # - # For non-Kubernetes executors, we use tcp://docker:2375/ - DOCKER_HOST: tcp://docker:2375/ - # When using dind, it's wise to use the overlayfs driver for - # improved performance. - DOCKER_DRIVER: overlay2 + CI_REGISTRY_IMAGE: $CI_REGISTRY/caosdb-pylib-testenv + # With dind the docker deamon is available on the network + DOCKER_HOST: tcp://docker:2375/ + # When using dind, it's wise to use the overlayfs driver for + # improved performance. + DOCKER_DRIVER: overlay2 + services: - - docker:dind + - docker:dind image: $CI_REGISTRY_IMAGE:latest stages: - - code_style - - setup - - test - - deploy + - code_style + - setup + - test + - deploy +# check code style code_style: - stage: code_style - script: - - pycodestyle --count ./ - - pylint3 --unsafe-load-any-extension=y -d all -e E,F src/caosdb/common - allow_failure: true + tags: [ docker ] + stage: code_style + script: + - pycodestyle --count ./ + - pylint3 --unsafe-load-any-extension=y -d all -e E,F src/caosdb/common + allow_failure: true # pylint tests for pycaosdb test: - stage: test - script: - - touch ~/.pycaosdb.ini - - tox -r + tags: [ docker ] + stage: test + script: + - touch ~/.pycaosdb.ini + - tox -r +# Trigger building of server image and integration tests trigger_build: + tags: [ docker ] stage: deploy script: - echo $TOKEN - /usr/bin/curl -X POST - -F token=$TOKEN - -F "variables[PYLIB]=$CI_COMMIT_REF_NAME" - -F "variables[TriggerdBy]=PYLIB" - -F ref=master https://gitlab.indiscale.com/api/v4/projects/14/trigger/pipeline + -F token=$TOKEN + -F "variables[PYLIB]=$CI_COMMIT_REF_NAME" + -F "variables[TriggerdBy]=PYLIB" + -F "variables[TriggerdByHash]=$CI_COMMIT_SHORT_SHA" + -F ref=master https://gitlab.indiscale.com/api/v4/projects/14/trigger/pipeline +# Build a docker image in which tests for this repository can run build-testenv: - image: docker:latest - stage: setup - script: - - cd unittests/docker - - docker login -u testuser -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - # use here general latest or specific branch latest... - - docker pull $CI_REGISTRY_IMAGE:latest || true - - docker build - --pull - --build-arg COMMIT=$CI_COMMIT_SHORT_SHA - --cache-from $CI_REGISTRY_IMAGE:latest - -t $CI_REGISTRY_IMAGE:latest . - - docker push $CI_REGISTRY_IMAGE:latest + tags: [ docker ] + image: docker:latest + stage: setup + script: + - cd unittests/docker + - docker login -u testuser -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + # use here general latest or specific branch latest... + - docker pull $CI_REGISTRY_IMAGE:latest || true + - docker build + --pull + --build-arg COMMIT=$CI_COMMIT_SHORT_SHA + --cache-from $CI_REGISTRY_IMAGE:latest + -t $CI_REGISTRY_IMAGE:latest . + - docker push $CI_REGISTRY_IMAGE:latest