ci(gitlab-ci): add `rubocop` linter (with `allow_failure`) [skip ci]
[arvados-formula.git] / .travis.yml
index 78b60d97561dfa9826c95dc817abb6cc39d4b9ea..273f12b5e39ac865dc2b6dbf0f51f76a8bd78d80 100644 (file)
@@ -1,6 +1,15 @@
 # -*- coding: utf-8 -*-
 # vim: ft=yaml
 ---
+################################################################################
+# NOTE: This file is UNMAINTAINED; it is provided for references purposes only.
+#       No guarantees are tendered that this structure will work after 2020.
+################################################################################
+# * https://en.wikipedia.org/wiki/Travis_CI:
+#   - "... free open-source plans were removed in [sic] the end of 2020"
+#   - https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
+#   - https://ropensci.org/technotes/2020/11/19/moving-away-travis/
+################################################################################
 ## Machine config
 os: 'linux'
 arch: 'amd64'
@@ -22,8 +31,10 @@ script:
 ## Stages and jobs matrix
 stages:
   - test
-  - name: 'release'
-    if: 'branch = master AND type != pull_request'
+  # # As part of the switch away from Travis CI, ensure that the `release` stage
+  # # is not run inadvertently
+  # - name: 'release'
+  #   if: 'branch = master AND type != pull_request'
 jobs:
   include:
     ## Define the test stage that runs the linters (and testing matrix, if applicable)
@@ -55,69 +66,95 @@ jobs:
                    @commitlint/travis-cli
         - commitlint-travis
 
+    # Run `pre-commit` linters in a single job
+    - language: 'python'
+      env: 'Lint_pre-commit'
+      name: 'Lint: pre-commit'
+      before_install: 'skip'
+      cache:
+        directories:
+          - $HOME/.cache/pre-commit
+      script:
+        # Install and run `pre-commit`
+        - pip install pre-commit==2.7.1
+        - pre-commit run --all-files --color always --verbose
+        - pre-commit run --color always --hook-stage manual --verbose commitlint-travis
+
     ## Define the rest of the matrix based on Kitchen testing
     # Make sure the instances listed below match up with
     # the `platforms` defined in `kitchen.yml`
-    # NOTE: Please try to select up to six instances that add some meaningful
-    #       testing of the formula's behaviour. If possible, try to refrain from
-    #       the classical "chosing all the instances because I want to test on
-    #       another/all distro/s" trap: it will just add time to the testing (see
-    #       the discussion on #121).  As an example, the set chosen below covers
-    #       the most used distros families, systemd and non-systemd and the latest
-    #       three supported Saltstack versions with python2 and 3.
-    #       As for `kitchen.yml`, that should still contain all of the platforms,
-    #       to allow for comprehensive local testing
-    #       Ref: https://github.com/saltstack-formulas/template-formula/issues/118
-    #       Ref: https://github.com/saltstack-formulas/template-formula/issues/121
-    - env: INSTANCE=default-debian-10-master-py3
-    # - env: INSTANCE=default-ubuntu-1804-master-py3
-    - env: INSTANCE=default-centos-8-master-py3
-    # - env: INSTANCE=default-fedora-31-master-py3
-    # - env: INSTANCE=default-opensuse-leap-151-master-py3
-    # - env: INSTANCE=default-amazonlinux-2-master-py3
-    # - env: INSTANCE=default-arch-base-latest-master-py2
-    # - env: INSTANCE=default-debian-10-3000-1-py3
-    - env: INSTANCE=default-ubuntu-1804-3000-1-py3
-    # - env: INSTANCE=default-centos-8-3000-1-py3
-    # - env: INSTANCE=default-fedora-31-3000-1-py3
-    - env: INSTANCE=default-opensuse-leap-151-3000-1-py3
-    - env: INSTANCE=default-amazonlinux-2-3000-1-py3
-    # - env: INSTANCE=default-arch-base-latest-3000-1-py2
-    # - env: INSTANCE=default-debian-10-2019-2-py3
-    # - env: INSTANCE=default-debian-9-2019-2-py3
-    # - env: INSTANCE=default-ubuntu-1804-2019-2-py3
-    # - env: INSTANCE=default-ubuntu-1604-2019-2-py3
-    # - env: INSTANCE=default-centos-8-2019-2-py3
-    # - env: INSTANCE=default-centos-7-2019-2-py3
-    - env: INSTANCE=default-fedora-31-2019-2-py3
-    # - env: INSTANCE=default-opensuse-leap-151-2019-2-py3
-    # - env: INSTANCE=default-amazonlinux-2-2019-2-py3
-    # - env: INSTANCE=default-ubuntu-1804-2019-2-py2
-    # - env: INSTANCE=default-amazonlinux-1-2019-2-py2
-    - env: INSTANCE=default-arch-base-latest-2019-2-py2
-    # - env: INSTANCE=default-centos-7-2018-3-py3
-    # - env: INSTANCE=default-fedora-30-2018-3-py3
-    # - env: INSTANCE=default-debian-9-2018-3-py2
-    # - env: INSTANCE=default-debian-8-2018-3-py2
-    # - env: INSTANCE=default-ubuntu-1804-2018-3-py2
-    # - env: INSTANCE=default-ubuntu-1604-2018-3-py2
-    - env: INSTANCE=centos6-centos-6-2018-3-py2
-    # - env: INSTANCE=default-opensuse-leap-151-2018-3-py2
-    # - env: INSTANCE=default-amazonlinux-1-2018-3-py2
-    # - env: INSTANCE=default-arch-base-latest-2018-3-py2
-    # <REMOVEME
-
-    # Test the conversion of `template-formula` into another formula
-    # ready for development
-    - env: 'Conversion'
-      name: 'Test: bin/convert-formula.sh'
-      script:
-        - git clone . tmp/converted-formula
-        - cd tmp/converted-formula
-        - DEBUG=true bin/convert-formula.sh converted
-        - '[ $(git rev-list HEAD --count) -eq 2 ]'
-        - bin/kitchen verify default-debian-10-2019-2-py3
-    # REMOVEME>
+    # - env: INSTANCE=api-debian-10-tiamat-py3
+    # - env: INSTANCE=keepstore-debian-10-tiamat-py3
+    # - env: INSTANCE=shell-debian-10-tiamat-py3
+    # - env: INSTANCE=workbench-debian-10-tiamat-py3
+    # - env: INSTANCE=api-debian-9-tiamat-py3
+    # - env: INSTANCE=keepstore-debian-9-tiamat-py3
+    # - env: INSTANCE=shell-debian-9-tiamat-py3
+    # - env: INSTANCE=workbench-debian-9-tiamat-py3
+    # - env: INSTANCE=api-ubuntu-2004-tiamat-py3
+    # - env: INSTANCE=keepstore-ubuntu-2004-tiamat-py3
+    # - env: INSTANCE=shell-ubuntu-2004-tiamat-py3
+    # - env: INSTANCE=workbench-ubuntu-2004-tiamat-py3
+    # - env: INSTANCE=api-ubuntu-1804-tiamat-py3
+    # - env: INSTANCE=keepstore-ubuntu-1804-tiamat-py3
+    # - env: INSTANCE=shell-ubuntu-1804-tiamat-py3
+    # - env: INSTANCE=workbench-ubuntu-1804-tiamat-py3
+    # - env: INSTANCE=api-centos-7-tiamat-py3
+    # - env: INSTANCE=keepstore-centos-7-tiamat-py3
+    # - env: INSTANCE=shell-centos-7-tiamat-py3
+    # - env: INSTANCE=workbench-centos-7-tiamat-py3
+    # - env: INSTANCE=api-debian-10-master-py3
+    # - env: INSTANCE=keepstore-debian-10-master-py3
+    # - env: INSTANCE=shell-debian-10-master-py3
+    # - env: INSTANCE=workbench-debian-10-master-py3
+    # - env: INSTANCE=api-ubuntu-2004-master-py3
+    # - env: INSTANCE=keepstore-ubuntu-2004-master-py3
+    # - env: INSTANCE=shell-ubuntu-2004-master-py3
+    # - env: INSTANCE=workbench-ubuntu-2004-master-py3
+    # - env: INSTANCE=api-ubuntu-1804-master-py3
+    # - env: INSTANCE=keepstore-ubuntu-1804-master-py3
+    # - env: INSTANCE=shell-ubuntu-1804-master-py3
+    # - env: INSTANCE=workbench-ubuntu-1804-master-py3
+    # - env: INSTANCE=api-debian-10-3001-py3
+    # - env: INSTANCE=keepstore-debian-10-3001-py3
+    # - env: INSTANCE=shell-debian-10-3001-py3
+    # - env: INSTANCE=workbench-debian-10-3001-py3
+    # - env: INSTANCE=api-debian-9-3001-py3
+    # - env: INSTANCE=keepstore-debian-9-3001-py3
+    # - env: INSTANCE=shell-debian-9-3001-py3
+    # - env: INSTANCE=workbench-debian-9-3001-py3
+    # - env: INSTANCE=api-ubuntu-2004-3001-py3
+    # - env: INSTANCE=keepstore-ubuntu-2004-3001-py3
+    # - env: INSTANCE=shell-ubuntu-2004-3001-py3
+    # - env: INSTANCE=workbench-ubuntu-2004-3001-py3
+    # - env: INSTANCE=api-ubuntu-1804-3001-py3
+    # - env: INSTANCE=keepstore-ubuntu-1804-3001-py3
+    # - env: INSTANCE=shell-ubuntu-1804-3001-py3
+    # - env: INSTANCE=workbench-ubuntu-1804-3001-py3
+    # - env: INSTANCE=api-centos-7-3001-py3
+    # - env: INSTANCE=keepstore-centos-7-3001-py3
+    - env: INSTANCE=shell-centos-7-3001-py3
+    # - env: INSTANCE=workbench-centos-7-3001-py3
+    # - env: INSTANCE=api-debian-10-3000-3-py3
+    # - env: INSTANCE=keepstore-debian-10-3000-3-py3
+    # - env: INSTANCE=shell-debian-10-3000-3-py3
+    # - env: INSTANCE=workbench-debian-10-3000-3-py3
+    # - env: INSTANCE=api-debian-9-3000-3-py3
+    # - env: INSTANCE=keepstore-debian-9-3000-3-py3
+    # - env: INSTANCE=shell-debian-9-3000-3-py3
+    # - env: INSTANCE=workbench-debian-9-3000-3-py3
+    # - env: INSTANCE=api-ubuntu-1804-3000-3-py3
+    # - env: INSTANCE=keepstore-ubuntu-1804-3000-3-py3
+    # - env: INSTANCE=shell-ubuntu-1804-3000-3-py3
+    # - env: INSTANCE=workbench-ubuntu-1804-3000-3-py3
+    # - env: INSTANCE=api-centos-7-3000-3-py3
+    - env: INSTANCE=keepstore-centos-7-3000-3-py3
+    # - env: INSTANCE=shell-centos-7-3000-3-py3
+    # - env: INSTANCE=workbench-centos-7-3000-3-py3
+    # - env: INSTANCE=api-ubuntu-1804-3000-3-py2
+    # - env: INSTANCE=keepstore-ubuntu-1804-3000-3-py2
+    # - env: INSTANCE=shell-ubuntu-1804-3000-3-py2
+    # - env: INSTANCE=workbench-ubuntu-1804-3000-3-py2
 
     ## Define the release stage that runs `semantic-release`
     - stage: 'release'
@@ -144,3 +181,15 @@ jobs:
         edge: true
         # Run `semantic-release`
         script: 'npx semantic-release@15.14'
+
+# Notification options: `always`, `never` or `change`
+notifications:
+  webhooks:
+    if: 'repo = saltstack-formulas/arvados-formula'
+    urls:
+      - https://saltstack-formulas.zulipchat.com/api/v1/external/travis?api_key=HsIq3o5QmLxdnVCKF9is0FUIpkpAY79P&stream=CI&topic=saltstack-formulas%2Farvados-formula&ignore_pull_requests=true
+    on_success: always  # default: always
+    on_failure: always  # default: always
+    on_start: always    # default: never
+    on_cancel: always   # default: always
+    on_error: always    # default: always