.gitlab-ci.yml 2.78 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
9
10
  # Should get auto-updated with the official 'python' repository
  # Installs:
  #  - pip: tox, coverage
  #  - 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
26
  before_script:
  script:
    - tox -e flake8

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

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

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

Thom Wiggers's avatar
Thom Wiggers committed
51
docs:
Thom Wiggers's avatar
Thom Wiggers committed
52
  stage: test
53
  image: $PY35_IMAGE
Thom Wiggers's avatar
Thom Wiggers committed
54
55
  before_script:
    # install django deps
Thom Wiggers's avatar
Thom Wiggers committed
56
    - pipenv install --dev
Thom Wiggers's avatar
Thom Wiggers committed
57
    # install doc deps
Thom Wiggers's avatar
Thom Wiggers committed
58
59
    - cd docs
    - pipenv run pip install -r requirements.txt
Thom Wiggers's avatar
Thom Wiggers committed
60
  script:
Thom Wiggers's avatar
Thom Wiggers committed
61
    - echo "Building current docs"
Thom Wiggers's avatar
Thom Wiggers committed
62
63
    - 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
64
    - echo "Checking if there are changes"
Thom Wiggers's avatar
Thom Wiggers committed
65
    - pipenv run ./generate-apidocs.sh
Thom Wiggers's avatar
Thom Wiggers committed
66
    - git diff --exit-code
Thom Wiggers's avatar
Thom Wiggers committed
67

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

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