Merge branch 'micah/platform-commit_template'
[leap_platform.git] / .gitlab-ci.yml
1 ---
2 image: 0xacab.org:4567/leap/docker/ruby:latest
3
4 # This is for caching the gems not only between the stages, but also
5 # persistent on the gitlab-runner so we don't need to install from
6 # scratch on every pipeline
7 cache:
8   key: "$CI_BUILD_REF_NAME"
9   untracked: true
10   paths:
11     - tests/platform-ci/vendor/
12
13 before_script:
14   - cd tests/platform-ci
15   # Check if running locally ($CI_PROJECT_ID is 0 then) and run setup.sh in
16   # this case
17   - if [ "$CI_PROJECT_ID" = "0" ]; then ./setup.sh; fi
18
19 stages:
20   - setup
21   - syntax
22   - deploy
23
24 setup:
25   stage: setup
26   script:
27     - ./setup.sh
28
29 lint:
30   stage: syntax
31   script:
32     - su -c '/usr/local/bin/bundle exec rake lint' cirunner
33
34 syntax:
35   stage: syntax
36   script:
37     - su -c '/usr/local/bin/bundle exec rake syntax' cirunner
38
39 validate:
40   stage: syntax
41   script:
42     - su -c '/usr/local/bin/bundle exec rake validate' cirunner
43
44 templates:
45   stage: syntax
46   script:
47     - su -c '/usr/local/bin/bundle exec rake templates' cirunner
48
49 catalog:
50   stage: syntax
51   script:
52     - su -c '/usr/local/bin/bundle exec rake catalog' cirunner
53
54 # rspec:
55 #  stage: rspec
56 #  script:
57 #    - /usr/local/bin/bundle exec rake spec
58
59 # The deploy_test job is run on any merge request. This is used to ensure that
60 # the merge request will deploy and test properly. It is not run when the merge
61 # request is accepted into master, instead the 'latest' job below is run
62 # instead.
63 deploy_test:
64   stage: deploy
65   except:
66     - master
67   script:
68     - su -c 'set -o pipefail; stdbuf -oL -eL ./ci-build.sh | ts' cirunner
69
70 # However, sometimes it's important to have a way of triggering a deploy
71 # from scratch manually even from the master branch, when i.e. new packages
72 # got uploaded to the master component of the platform deb repo.
73 deploy_test:manual:
74   stage: deploy
75   only:
76     - master
77   when: manual
78   script:
79     - su -c 'set -o pipefail; stdbuf -oL -eL ./ci-build.sh | ts' cirunner
80
81 # Test upgrades from the latetest release to latest HEAD
82 upgrade_test:
83   stage: deploy
84   script:
85     # Allow unpriviledged user to checkout last release of leap_platform
86     - chown cirunner:cirunner -R ../..
87     - su -c 'set -o pipefail; stdbuf -oL -eL ./ci-build.sh | ts' cirunner
88
89 # Latest job will only run on the master branch, which means all merge requests
90 # that are created from branches don't get to deploy to the latest-ci server.
91 # When a merge request is merged, then the latest job will deploy the code to
92 # the latest provider, and the deployment will be recorded in an environment
93 # named 'latest'
94 ci.leap.se:
95   stage: deploy
96   environment:
97     name: staging
98   only:
99     - master@leap/platform
100   script:
101     - >
102       su -c '/usr/bin/unbuffer /bin/bash -o pipefail ./ci-build.sh |
103       /usr/bin/ts' cirunner
104
105 demo.bitmask.net:
106   stage: deploy
107   environment:
108     name: production/demo/vpn
109   only:
110     - master
111   when: manual
112   script:
113     - >
114       su -c '/usr/bin/unbuffer /bin/bash -o pipefail ./ci-build.sh |
115       /usr/bin/ts' cirunner
116
117 mail.bitmask.net:
118   stage: deploy
119   environment:
120     name: production/demo/mail
121   only:
122     - master
123   when: manual
124   script:
125     - >
126       su -c '/usr/bin/unbuffer /bin/bash -o pipefail ./ci-build.sh |
127       /usr/bin/ts' cirunner