# default installed image for docker executor is: python:3.6 # using an image that can do git, docker, docker-compose image: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-fair/ci-runner # Uncomment the next lines, to run each pipeline/job in its own docker environment. # Otherwise, it will use the docker of the gitlab runner host (e.g. enc-preprocessing...). # This will give it access to a persistent layer cache, which will not be available # with the docker service. # services: # - docker:dind # TODO remove CI_NOMAD_DEV_PROXY stages: - build - test - release variables: TEST_IMAGE: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-fair:${CI_COMMIT_REF_NAME} STABLE_IMAGE: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-fair:stable LATEST_IMAGE: gitlab-registry.mpcdf.mpg.de/nomad-lab/nomad-fair:latest KUBECONFIG: /etc/deploy/config build: stage: build before_script: - git submodule sync - git submodule update --init --jobs=4 # create the version information - ./gitinfo.sh script: # ignore test directories of dependencies, there is a lot of data that we not use # in the context of the docker image - find dependencies -name "*test*" -type d -exec echo "{}/" \; >> .dockerignore - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab-registry.mpcdf.mpg.de - docker build -t $TEST_IMAGE . - docker push $TEST_IMAGE except: - /^dev-.*$/ - tags python linting: stage: test image: $TEST_IMAGE script: - cd /app - python -m pycodestyle --ignore=E501,E701,E731 nomad tests - python -m pylint --load-plugins=pylint_mongoengine,nomad/metainfo/pylint_plugin nomad tests - python -m mypy --ignore-missing-imports --follow-imports=silent --no-strict-optional nomad tests except: refs: - tags variables: - $CI_COMMIT_REF_NAME =~ /^dev-.*$/ - $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i gui linting: stage: test image: node script: - cd gui - yarn - yarn run lint except: refs: - tags variables: - $CI_COMMIT_REF_NAME =~ /^dev-.*$/ - $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i python tests: stage: test image: $TEST_IMAGE services: - rabbitmq - name: docker.elastic.co/elasticsearch/elasticsearch:6.3.2 alias: elastic # fix issue with running elastic in gitlab ci runner: # https://gitlab.com/gitlab-org/gitlab-ce/issues/42214 command: [ "bin/elasticsearch", "-Ediscovery.type=single-node" ] variables: RABBITMQ_ERLANG_COOKIE: SWQOKODSQALRPCLNMEQG RABBITMQ_DEFAULT_USER: rabbitmq RABBITMQ_DEFAULT_PASS: rabbitmq RABBITMQ_DEFAULT_VHOST: / NOMAD_RABBITMQ_HOST: rabbitmq NOMAD_ELASTIC_HOST: elastic NOMAD_MONGO_HOST: mongo NOMAD_KEYCLOAK_PASSWORD: ${CI_KEYCLOAK_ADMIN_PASSWORD} NOMAD_NORMALIZE_SPRINGER_DB_PATH: /nomad/fairdi/db/data/springer.msg script: - cd /app - ls /builds - python -m pytest --cov=nomad -sv tests except: refs: - tags variables: - $CI_COMMIT_REF_NAME =~ /^dev-.*$/ - $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i gui tests: stage: test image: node script: - cd gui - yarn - yarn run test except: refs: - tags variables: - $CI_COMMIT_REF_NAME =~ /^dev-.*$/ - $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i install tests: stage: test image: python:3.7 before_script: - git submodule sync - sleep 5 - git submodule update --init --jobs=4 script: - pip install --upgrade pip - pip install fastentrypoints - pip install pyyaml - pip install numpy - python setup.py compile - python setup.py sdist - pip install dist/nomad-lab-*.tar.gz - python -c "import nomad.datamodel, nomad.datamodel.metainfo, nomad.client" - pip install `echo dist/nomad-lab-*.tar.gz`[parsing] - python -m nomad.cli parse tests/data/parsers/vasp/vasp.xml except: refs: - tags variables: - $CI_COMMIT_REF_NAME =~ /^dev-.*$/ - $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i dev setup tests: stage: test image: python:3.7 script: - pip install --upgrade pip - ./setup.sh - python -m nomad.cli parse tests/data/parsers/vasp/vasp.xml except: refs: - tags variables: - $CI_COMMIT_REF_NAME =~ /^dev-.*$/ - $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i deploy dev: stage: release before_script: - mkdir -p /etc/deploy - echo ${CI_K8S_CONFIG} | base64 -d > ${KUBECONFIG} script: - RELEASE_NAME=`echo ${CI_COMMIT_REF_NAME} | sed -e 's/[^A-Za-z0-9\-]/-/g'` - helm dependency update ops/helm/nomad - helm upgrade --namespace nomad --install $RELEASE_NAME ops/helm/nomad -f ops/helm/nomad/deployments/dev-values.yaml --set proxy.external.path=/dev/nomad/$RELEASE_NAME,image.tag=$CI_COMMIT_REF_NAME,roll=true --wait - docker pull $TEST_IMAGE - docker run -t -e NOMAD_KEYCLOAK_REALM_NAME=fairdi_nomad_prod $TEST_IMAGE python -m nomad.cli client -n https://nomad-lab.eu/dev/nomad/$RELEASE_NAME/api -u test -w $CI_NOMAD_TEST_PASSWORD integrationtests --skip-publish --skip-doi except: - /^dev-.*$/ when: manual deploy prod beta: stage: release before_script: - mkdir -p /etc/deploy - echo ${CI_K8S_PROD_CONFIG} | base64 -d > ${KUBECONFIG} script: - helm dependency update ops/helm/nomad - helm upgrade --install nomad-prod-test ops/helm/nomad -f ops/helm/nomad/deployments/prod-beta-values.yaml --set image.tag=$CI_COMMIT_REF_NAME,roll=true --wait - docker pull $TEST_IMAGE - docker run -t -e NOMAD_KEYCLOAK_REALM_NAME=fairdi_nomad_prod $TEST_IMAGE python -m nomad.cli client -n https://nomad-lab.eu/prod/rae/beta/api -u test -w $CI_NOMAD_TEST_PASSWORD integrationtests --skip-publish --skip-doi except: - /^dev-.*$/ when: manual release latest image: stage: release script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab-registry.mpcdf.mpg.de - docker pull $TEST_IMAGE - docker tag $TEST_IMAGE $LATEST_IMAGE - docker push $LATEST_IMAGE except: - /^dev-.*$/ when: manual release stable image: stage: release script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab-registry.mpcdf.mpg.de - docker pull $TEST_IMAGE - docker tag $TEST_IMAGE $LATEST_IMAGE - docker push $LATEST_IMAGE - docker tag $TEST_IMAGE $STABLE_IMAGE - docker push $STABLE_IMAGE when: manual only: - tags python package: stage: release script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab-registry.mpcdf.mpg.de - docker pull $TEST_IMAGE - docker run --rm $TEST_IMAGE python -m twine upload -u gitlab-ci-token -p ${CI_JOB_TOKEN} --repository-url https://gitlab.mpcdf.mpg.de/api/v4/projects/${CI_PROJECT_ID}/packages/pypi dist/nomad-lab.tar.gz except: - /^dev-.*$/ when: manual pypi package: stage: release script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab-registry.mpcdf.mpg.de - docker pull $TEST_IMAGE - docker run --rm $TEST_IMAGE python -m twine upload -u $CI_TWINE_USER -p $CI_TWINE_PASSWORD dist/nomad-lab.tar.gz when: manual only: - tags