.gitlab-ci.yml 2.77 KB
Newer Older
Wietse Kuipers's avatar
Wietse Kuipers committed
1 2 3 4
variables:
  POSTGRES_DB: thalia
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: ""
5
  CI_DEPS: psycopg2-binary
6 7 8 9 10 11
  # https://hub.docker.com/r/twiggers/python-thalia/
  # https://github.com/thomwiggers/python-thalia
  # Should get auto-updated with the official 'python' repository
  # Installs:
  #  - pip: tox, coverage
  #  - apt: ghostscript
12 13
  PY35_IMAGE: thalia/python-thalia:3.5
  PY36_IMAGE: thalia/python-thalia:3.6
Thom Wiggers's avatar
Thom Wiggers committed
14
  PIP_CACHE_DIR: "${CI_PROJECT_DIR}/pip-cache"
Wietse Kuipers's avatar
Wietse Kuipers committed
15

Thom Wiggers's avatar
Thom Wiggers committed
16 17 18 19
stages:
  - test
  - deploy

Thom Wiggers's avatar
Thom Wiggers committed
20
pep8:
Thom Wiggers's avatar
Thom Wiggers committed
21
  stage: test
22
  image: $PY35_IMAGE
Thom Wiggers's avatar
Thom Wiggers committed
23 24 25 26 27
  before_script:
  script:
    - tox -e flake8

.djangotest: &djangotest
Thom Wiggers's avatar
Thom Wiggers committed
28
  stage: test
Thom Wiggers's avatar
Thom Wiggers committed
29 30
  services:
    - postgres:latest
Thom Wiggers's avatar
Thom Wiggers committed
31 32 33
  before_script:
    - git log -1
  script:
Thom Wiggers's avatar
Thom Wiggers committed
34
    - tox -e ${PYTHON_VERSION}-${DJANGO_VERSION}
Thom Wiggers's avatar
Thom Wiggers committed
35 36
    - cd website
    - coverage report
Thom Wiggers's avatar
Thom Wiggers committed
37

Thom Wiggers's avatar
Thom Wiggers committed
38 39
python35-django20:
  <<: *djangotest
40
  image: $PY35_IMAGE
Thom Wiggers's avatar
Thom Wiggers committed
41 42 43 44
  variables:
    PYTHON_VERSION: py35
    DJANGO_VERSION: django20

Thom Wiggers's avatar
Thom Wiggers committed
45 46
python36-django20:
  <<: *djangotest
47
  image: $PY36_IMAGE
Thom Wiggers's avatar
Thom Wiggers committed
48 49 50 51
  variables:
    PYTHON_VERSION: py36
    DJANGO_VERSION: django20

Thom Wiggers's avatar
Thom Wiggers committed
52
docs:
Thom Wiggers's avatar
Thom Wiggers committed
53
  stage: test
54
  image: $PY35_IMAGE
Thom Wiggers's avatar
Thom Wiggers committed
55 56 57
  before_script:
    # install django deps
    - pip install -r requirements.txt
58
    - pip install -r dev-requirements.txt
Thom Wiggers's avatar
Thom Wiggers committed
59 60 61 62
    - cd docs
    # install doc deps
    - pip install -r requirements.txt
  script:
Thom Wiggers's avatar
Thom Wiggers committed
63
    - echo "Building current docs"
Thom Wiggers's avatar
Thom Wiggers committed
64
    - env -u GITLAB_CI make doctest
Thom Wiggers's avatar
Thom Wiggers committed
65
    - env -u GITLAB_CI sphinx-build -M html "." "_build" -W -j $(nproc)
Thom Wiggers's avatar
Thom Wiggers committed
66 67 68
    - echo "Checking if there are changes"
    - ./generate-apidocs.sh
    - git diff --exit-code
Thom Wiggers's avatar
Thom Wiggers committed
69

Thom Wiggers's avatar
Thom Wiggers committed
70 71 72 73 74 75 76 77 78 79
build docker image:
  stage: test
  services:
    - docker:dind
  image: thalia/docker-compose
  tags:
    - docker
  before_script:
    - echo $GITLAB_REGISTRY_PASSWORD | docker login --username thaliawww --password-stdin registry.gitlab.com
  script:
Joren Vrancken's avatar
Joren Vrancken committed
80
    - docker-compose config -q
Thom Wiggers's avatar
Thom Wiggers committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
    - docker-compose build --build-arg install_dev_requirements=0 web
    - docker-compose run --rm web test
    - docker tag $DOCKER_LATEST $DOCKER_TAG
    - docker push $DOCKER_TAG
  variables:
    DOCKER_LATEST: registry.gitlab.com/thaliawww/concrexit:latest
    DOCKER_TAG: registry.gitlab.com/thaliawww/concrexit:$CI_COMMIT_SHA

tag docker image:
  stage: deploy
  services:
    - docker:dind
  image: docker:git
  tags:
    - docker
  only:
    - tags
  dependencies:
    - build docker image
  before_script:
    - echo $GITLAB_REGISTRY_PASSWORD | docker login --username thaliawww --password-stdin registry.gitlab.com
  script:
    - docker pull $DOCKER_TAG
Thom Wiggers's avatar
Thom Wiggers committed
104
    - docker tag $DOCKER_TAG $DOCKER_TAG_PRODUCTION
Thom Wiggers's avatar
Thom Wiggers committed
105 106 107 108 109 110
    - docker push $DOCKER_TAG_PRODUCTION
  variables:
    DOCKER_TAG: registry.gitlab.com/thaliawww/concrexit:$CI_COMMIT_SHA
    DOCKER_TAG_PRODUCTION: registry.gitlab.com/thaliawww/concrexit:$CI_COMMIT_TAG


Thom Wiggers's avatar
Thom Wiggers committed
111
cache:
112
  key: "$CI_JOB_NAME"
Thom Wiggers's avatar
Thom Wiggers committed
113
  paths:
Thom Wiggers's avatar
Thom Wiggers committed
114
    - "${PIP_CACHE_DIR}"
Thom Wiggers's avatar
Thom Wiggers committed
115 116

# vim: set sw=2 ts=2 et :