.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 6
  # https://hub.docker.com/r/thalia/python-thalia/
  # https://github.com/thaliawww/python-thalia
7 8
  # Should get auto-updated with the official 'python' repository
  # Installs:
Thom Wiggers's avatar
Thom Wiggers committed
9
  #  - pip: tox, coverage, pipenv
10
  #  - apt: ghostscript
11 12
  PY35_IMAGE: thalia/python-thalia:3.5
  PY36_IMAGE: thalia/python-thalia:3.6
Thom Wiggers's avatar
Thom Wiggers committed
13
  PIP_CACHE_DIR: "${CI_PROJECT_DIR}/pip-cache"
Wietse Kuipers's avatar
Wietse Kuipers committed
14

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

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

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

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

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

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

Thom Wiggers's avatar
Thom Wiggers committed
67 68 69 70 71 72 73 74 75 76
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
77
    - docker-compose config -q
78
    - docker-compose build --build-arg install_dev_requirements=0 --build-arg source_commit=$(git rev-parse HEAD) web
Thom Wiggers's avatar
Thom Wiggers committed
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
    - 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
101
    - docker tag $DOCKER_TAG $DOCKER_TAG_PRODUCTION
Thom Wiggers's avatar
Thom Wiggers committed
102 103 104 105 106 107
    - 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
108
cache:
109
  key: "$CI_JOB_NAME"
Thom Wiggers's avatar
Thom Wiggers committed
110
  paths:
Thom Wiggers's avatar
Thom Wiggers committed
111
    - "${PIP_CACHE_DIR}"
Thom Wiggers's avatar
Thom Wiggers committed
112 113

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