Merge branch '17601-register-shell-nodes-for-webshell'
[arvados-formula.git] / .travis.yml
1 # -*- coding: utf-8 -*-
2 # vim: ft=yaml
3 ---
4 ################################################################################
5 # NOTE: This file is UNMAINTAINED; it is provided for references purposes only.
6 #       No guarantees are tendered that this structure will work after 2020.
7 ################################################################################
8 # * https://en.wikipedia.org/wiki/Travis_CI:
9 #   - "... free open-source plans were removed in [sic] the end of 2020"
10 #   - https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
11 #   - https://ropensci.org/technotes/2020/11/19/moving-away-travis/
12 ################################################################################
13 ## Machine config
14 os: 'linux'
15 arch: 'amd64'
16 dist: 'bionic'
17 version: '~> 1.0'
18
19 ## Language and cache config
20 language: 'ruby'
21 cache: 'bundler'
22
23 ## Services config
24 services:
25   - docker
26
27 ## Script to run for the test stage
28 script:
29   - bin/kitchen verify "${INSTANCE}"
30
31 ## Stages and jobs matrix
32 stages:
33   - test
34   # # As part of the switch away from Travis CI, ensure that the `release` stage
35   # # is not run inadvertently
36   # - name: 'release'
37   #   if: 'branch = master AND type != pull_request'
38 jobs:
39   include:
40     ## Define the test stage that runs the linters (and testing matrix, if applicable)
41
42     # Run all of the linters in a single job
43     - language: 'node_js'
44       node_js: 'lts/*'
45       env: 'Lint'
46       name: 'Lint: salt-lint, yamllint, rubocop, shellcheck & commitlint'
47       before_install: 'skip'
48       script:
49         # Install and run `salt-lint`
50         - pip install --user salt-lint
51         - git ls-files -- '*.sls' '*.jinja' '*.j2' '*.tmpl' '*.tst'
52                         | xargs salt-lint
53         # Install and run `yamllint`
54         # Need at least `v1.17.0` for the `yaml-files` setting
55         - pip install --user yamllint>=1.17.0
56         - yamllint -s .
57         # Install and run `rubocop`
58         - gem install rubocop
59         - rubocop -d
60         # Run `shellcheck` (already pre-installed in Travis)
61         - shellcheck --version
62         - git ls-files -- '*.sh' '*.bash' '*.ksh'
63                         | xargs shellcheck
64         # Install and run `commitlint`
65         - npm i -D @commitlint/config-conventional
66                    @commitlint/travis-cli
67         - commitlint-travis
68
69     # Run `pre-commit` linters in a single job
70     - language: 'python'
71       env: 'Lint_pre-commit'
72       name: 'Lint: pre-commit'
73       before_install: 'skip'
74       cache:
75         directories:
76           - $HOME/.cache/pre-commit
77       script:
78         # Install and run `pre-commit`
79         - pip install pre-commit==2.7.1
80         - pre-commit run --all-files --color always --verbose
81         - pre-commit run --color always --hook-stage manual --verbose commitlint-travis
82
83     ## Define the rest of the matrix based on Kitchen testing
84     # Make sure the instances listed below match up with
85     # the `platforms` defined in `kitchen.yml`
86     # - env: INSTANCE=api-debian-10-tiamat-py3
87     # - env: INSTANCE=api-debian-9-tiamat-py3
88     # - env: INSTANCE=api-ubuntu-2004-tiamat-py3
89     # - env: INSTANCE=api-ubuntu-1804-tiamat-py3
90     # - env: INSTANCE=api-ubuntu-1604-tiamat-py3
91     # - env: INSTANCE=api-centos-8-tiamat-py3
92     # - env: INSTANCE=api-centos-7-tiamat-py3
93     # - env: INSTANCE=api-amazonlinux-2-tiamat-py3
94     # - env: INSTANCE=api-oraclelinux-8-tiamat-py3
95     # - env: INSTANCE=api-oraclelinux-7-tiamat-py3
96     - env: INSTANCE=api-debian-10-master-py3
97     - env: INSTANCE=workbench-debian-10-master-py3
98     # - env: INSTANCE=shell-debian-10-master-py3
99     - env: INSTANCE=keepstore-debian-10-master-py3
100     # - env: INSTANCE=api-debian-9-master-py3
101     # - env: INSTANCE=workbench-debian-9-master-py3
102     # - env: INSTANCE=shell-debian-9-master-py3
103     # - env: INSTANCE=keepstore-debian-9-master-py3
104     # - env: INSTANCE=api-ubuntu-2004-master-py3
105     # - env: INSTANCE=workbench-ubuntu-2004-master-py3
106     # - env: INSTANCE=shell-ubuntu-2004-master-py3
107     # - env: INSTANCE=keepstore-ubuntu-2004-master-py3
108     - env: INSTANCE=api-ubuntu-1804-master-py3
109     - env: INSTANCE=workbench-ubuntu-1804-master-py3
110     # - env: INSTANCE=shell-ubuntu-1804-master-py3
111     # - env: INSTANCE=keepstore-ubuntu-1804-master-py3
112     # - env: INSTANCE=api-ubuntu-1604-master-py3
113     # - env: INSTANCE=workbench-ubuntu-1604-master-py3
114     # - env: INSTANCE=shell-ubuntu-1604-master-py3
115     # - env: INSTANCE=keepstore-ubuntu-1604-master-py3
116     # - env: INSTANCE=api-centos-8-master-py3
117     # - env: INSTANCE=workbench-centos-8-master-py3
118     # - env: INSTANCE=shell-centos-8-master-py3
119     # - env: INSTANCE=keepstore-centos-8-master-py3
120     # - env: INSTANCE=api-centos-7-master-py3
121     # - env: INSTANCE=workbench-centos-7-master-py3
122     - env: INSTANCE=shell-centos-7-master-py3
123     - env: INSTANCE=keepstore-centos-7-master-py3
124     # - env: INSTANCE=api-amazonlinux-2-master-py3
125     # - env: INSTANCE=workbench-amazonlinux-2-master-py3
126     # - env: INSTANCE=shell-amazonlinux-2-master-py3
127     # - env: INSTANCE=keepstore-amazonlinux-2-master-py3
128     # - env: INSTANCE=api-oraclelinux-8-master-py3
129     # - env: INSTANCE=workbench-oraclelinux-8-master-py3
130     # - env: INSTANCE=shell-oraclelinux-8-master-py3
131     # - env: INSTANCE=keepstore-oraclelinux-8-master-py3
132     # - env: INSTANCE=api-oraclelinux-7-master-py3
133     # - env: INSTANCE=workbench-oraclelinux-7-master-py3
134     # - env: INSTANCE=shell-oraclelinux-7-master-py3
135     # - env: INSTANCE=keepstore-oraclelinux-7-master-py3
136     # - env: INSTANCE=api-debian-10-3002-5-py3
137     # - env: INSTANCE=api-debian-9-3002-5-py3
138     # - env: INSTANCE=api-ubuntu-2004-3002-5-py3
139     # - env: INSTANCE=api-ubuntu-1804-3002-5-py3
140     # - env: INSTANCE=api-ubuntu-1604-3002-5-py3
141     # - env: INSTANCE=api-centos-8-3002-5-py3
142     # - env: INSTANCE=api-centos-7-3002-5-py3
143     # - env: INSTANCE=api-amazonlinux-2-3002-5-py3
144     # - env: INSTANCE=api-oraclelinux-8-3002-5-py3
145     # - env: INSTANCE=api-oraclelinux-7-3002-5-py3
146     # - env: INSTANCE=api-debian-10-3001-6-py3
147     # - env: INSTANCE=api-debian-9-3001-6-py3
148     # - env: INSTANCE=api-ubuntu-2004-3001-6-py3
149     # - env: INSTANCE=api-ubuntu-1804-3001-6-py3
150     # - env: INSTANCE=api-ubuntu-1604-3001-6-py3
151     # - env: INSTANCE=api-centos-8-3001-6-py3
152     # - env: INSTANCE=api-centos-7-3001-6-py3
153     # - env: INSTANCE=api-amazonlinux-2-3001-6-py3
154     # - env: INSTANCE=api-oraclelinux-8-3001-6-py3
155     # - env: INSTANCE=api-oraclelinux-7-3001-6-py3
156     # - env: INSTANCE=api-debian-10-3000-8-py3
157     # - env: INSTANCE=api-debian-9-3000-8-py3
158     # - env: INSTANCE=api-ubuntu-1804-3000-8-py3
159     # - env: INSTANCE=api-ubuntu-1604-3000-8-py3
160     # - env: INSTANCE=api-centos-8-3000-8-py3
161     # - env: INSTANCE=api-centos-7-3000-8-py3
162     # - env: INSTANCE=api-amazonlinux-2-3000-8-py3
163     # - env: INSTANCE=api-oraclelinux-8-3000-8-py3
164     # - env: INSTANCE=api-oraclelinux-7-3000-8-py3
165     # - env: INSTANCE=api-ubuntu-1804-3000-8-py2
166     # - env: INSTANCE=api-ubuntu-1604-3000-8-py2
167
168     ## Define the release stage that runs `semantic-release`
169     - stage: 'release'
170       language: 'node_js'
171       node_js: 'lts/*'
172       env: 'Release'
173       name: 'Run semantic-release inc. file updates to AUTHORS, CHANGELOG & FORMULA'
174       before_install: 'skip'
175       script:
176         # Update `AUTHORS.md`
177         - export MAINTAINER_TOKEN=${GH_TOKEN}
178         - go get github.com/myii/maintainer
179         - maintainer contributor
180
181         # Install all dependencies required for `semantic-release`
182         - npm i -D @semantic-release/changelog@3
183                    @semantic-release/exec@3
184                    @semantic-release/git@7
185       deploy:
186         provider: 'script'
187         # Opt-in to `dpl v2` to complete the Travis build config validation (beta)
188         # * https://docs.travis-ci.com/user/build-config-validation
189         # Deprecated `skip_cleanup` can now be avoided, `cleanup: false` is by default
190         edge: true
191         # Run `semantic-release`
192         script: 'npx semantic-release@15.14'
193
194 # Notification options: `always`, `never` or `change`
195 notifications:
196   webhooks:
197     if: 'repo = saltstack-formulas/arvados-formula'
198     urls:
199       - https://saltstack-formulas.zulipchat.com/api/v1/external/travis?api_key=HsIq3o5QmLxdnVCKF9is0FUIpkpAY79P&stream=CI&topic=saltstack-formulas%2Farvados-formula&ignore_pull_requests=true
200     on_success: always  # default: always
201     on_failure: always  # default: always
202     on_start: always    # default: never
203     on_cancel: always   # default: always
204     on_error: always    # default: always