summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 2b6743a13e078c9f310a7813e511f9cb5a14d91b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
stages:
  - code-check
  - build
  - tests
  - benchmark

image: 0xacab.org:4567/leap/soledad:latest

variables:
  DOCKER_DRIVER: overlay

# Cache a folder between builds.
# Tox sets it to be our pip cache.
cache:
  untracked: true
  key: soledad-shared-pip-cache
  paths:
  - testing/.cache/

before_script:
  - echo "Running on ${HOST_HOSTNAME:=$(hostname)}"

code-check:
  stage: code-check
  script:
    - cd testing
    - tox -e code-check

tests:
  stage: tests
  services:
    - couchdb
  script:
    - cd testing
    - tox -- --couch-url http://couchdb:5984

benchmark:
  stage: benchmark
  tags:
    - benchmark
  services:
    - couchdb
  allow_failure: true
  script:
    - cd testing
    - curl -s couchdb:5984
    # You can provide a $NETRC variable containing the creds for your
    # elasticsearch instance so it's protected from being leaked in the
    # CI console
    # We can't get it working inside docker for unknown reasons.
    #- echo "$NETRC" > /root/.netrc && chmod 600 /root/.netrc
    #
    # Add $PYTEST_OPTS to pytest.ini to allow posting benchmark tests
    # to an elasticsearch instance
    - echo "addopts=$PYTEST_OPTS" >> pytest.ini && chmod 600 pytest.ini
    - /usr/bin/unbuffer tox --recreate -e benchmark -- --couch-url http://couchdb:5984 -m 'not synchronous' | /usr/bin/ts -s

build_docker_image:
  image: 0xacab.org:4567/leap/soledad:latest
  stage: build
  services:
    - docker:dind
  tags:
    - docker-in-docker
  before_script:
     - >
       export LAST_COMMIT=$(curl -s --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" https://0xacab.org/api/v4/projects/519/pipelines |
       python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
  script:
    - >
      if git diff $LAST_COMMIT HEAD --name-only|grep testing/docker; then
        docker --version
        docker info
        docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY
        docker build -t ${CI_REGISTRY_IMAGE}:latest testing/docker
        docker push ${CI_REGISTRY_IMAGE}:latest
      fi