Skip to content

Commit 753e00b

Browse files
committed
ci(gitlab-ci): use GitLab CI as Travis CI replacement
* Automated using myii/ssf-formula#275
1 parent ff1ac5a commit 753e00b

6 files changed

+179
-11
lines changed

.gitlab-ci.yml

+154
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=yaml
3+
---
4+
###############################################################################
5+
# Define all YAML node anchors
6+
###############################################################################
7+
.node_anchors:
8+
# `only` (also used for `except` where applicable)
9+
only_branch_master_parent_repo: &only_branch_master_parent_repo
10+
- 'master@saltstack-formulas/icinga2-formula'
11+
# `stage`
12+
stage_lint: &stage_lint 'lint'
13+
stage_release: &stage_release 'release'
14+
stage_test: &stage_test 'test'
15+
# `image`
16+
image_commitlint: &image_commitlint 'myii/ssf-commitlint:11'
17+
image_dindruby: &image_dindruby 'myii/ssf-dind-ruby:2.7.1-r3'
18+
image_precommit: &image_precommit
19+
name: 'myii/ssf-pre-commit:2.9.2'
20+
entrypoint: ['/bin/bash', '-c']
21+
image_semantic-release: &image_semanticrelease 'myii/ssf-semantic-release:15.14'
22+
# `services`
23+
services_docker_dind: &services_docker_dind
24+
- 'docker:dind'
25+
# `variables`
26+
# https://forum.gitlab.com/t/gitlab-com-ci-caching-rubygems/5627/3
27+
# https://bundler.io/v1.16/bundle_config.html
28+
variables_bundler: &variables_bundler
29+
BUNDLE_CACHE_PATH: '${CI_PROJECT_DIR}/.cache/bundler'
30+
BUNDLE_WITHOUT: 'production'
31+
# `cache`
32+
cache_bundler: &cache_bundler
33+
key: '${CI_JOB_STAGE}'
34+
paths:
35+
- '${BUNDLE_CACHE_PATH}'
36+
37+
###############################################################################
38+
# Define stages and global variables
39+
###############################################################################
40+
stages:
41+
- *stage_lint
42+
- *stage_test
43+
- *stage_release
44+
variables:
45+
DOCKER_DRIVER: 'overlay2'
46+
47+
###############################################################################
48+
# `lint` stage: `commitlint` & `pre-commit`
49+
###############################################################################
50+
commitlint:
51+
stage: *stage_lint
52+
image: *image_commitlint
53+
script:
54+
# Add `upstream` remote to get access to `upstream/master`
55+
- 'git remote add upstream ${CI_PROJECT_URL}.git'
56+
- 'git fetch --all'
57+
# Set default commit hashes for `--from` and `--to`
58+
- 'export COMMITLINT_FROM="$(git merge-base upstream/master HEAD)"'
59+
- 'export COMMITLINT_TO="${CI_COMMIT_SHA}"'
60+
# `coqbot` adds a merge commit to test PRs on top of the latest commit in
61+
# the repo; amend this merge commit message to avoid failure
62+
- |
63+
if [ "${GITLAB_USER_LOGIN}" = "coqbot" ] \
64+
&& [ "${CI_COMMIT_BRANCH}" != "master" ]; then
65+
git commit --amend -m \
66+
'chore: reword coqbot merge commit message for commitlint'
67+
export COMMITLINT_TO=HEAD
68+
fi
69+
# Run `commitlint`
70+
- 'commitlint --from "${COMMITLINT_FROM}"
71+
--to "${COMMITLINT_TO}"
72+
--verbose'
73+
74+
pre-commit:
75+
stage: *stage_lint
76+
image: *image_precommit
77+
# https://pre-commit.com/#gitlab-ci-example
78+
variables:
79+
PRE_COMMIT_HOME: '${CI_PROJECT_DIR}/.cache/pre-commit'
80+
cache:
81+
key: '${CI_JOB_NAME}'
82+
paths:
83+
- '${PRE_COMMIT_HOME}'
84+
script:
85+
- 'pre-commit run --all-files --color always --verbose'
86+
87+
###############################################################################
88+
# Define `test` template
89+
###############################################################################
90+
.test_instance:
91+
stage: *stage_test
92+
image: *image_dindruby
93+
services: *services_docker_dind
94+
variables: *variables_bundler
95+
cache: *cache_bundler
96+
before_script:
97+
# TODO: This should work from the env vars above automatically
98+
- 'bundle config set path "${BUNDLE_CACHE_PATH}"'
99+
- 'bundle config set without "${BUNDLE_WITHOUT}"'
100+
- 'bundle install'
101+
script:
102+
# Alternative value to consider: `${CI_JOB_NAME}`
103+
- 'bin/kitchen verify "${DOCKER_ENV_CI_JOB_NAME}"'
104+
105+
###############################################################################
106+
# `test` stage: each instance below uses the `test` template above
107+
###############################################################################
108+
## Define the rest of the matrix based on Kitchen testing
109+
# Make sure the instances listed below match up with
110+
# the `platforms` defined in `kitchen.yml`
111+
# default-debian-10-master-py3: {extends: '.test_instance'}
112+
# default-ubuntu-1804-master-py3: {extends: '.test_instance'}
113+
# default-centos-8-master-py3: {extends: '.test_instance'}
114+
# default-fedora-31-master-py3: {extends: '.test_instance'}
115+
# default-opensuse-leap-151-master-py3: {extends: '.test_instance'}
116+
# default-amazonlinux-2-master-py3: {extends: '.test_instance'}
117+
# default-debian-10-2019-2-py3: {extends: '.test_instance'}
118+
# default-debian-9-2019-2-py3: {extends: '.test_instance'}
119+
# default-ubuntu-1804-2019-2-py3: {extends: '.test_instance'}
120+
# default-centos-8-2019-2-py3: {extends: '.test_instance'}
121+
# default-fedora-31-2019-2-py3: {extends: '.test_instance'}
122+
# default-opensuse-leap-151-2019-2-py3: {extends: '.test_instance'}
123+
# default-centos-7-2019-2-py2: {extends: '.test_instance'}
124+
# default-amazonlinux-2-2019-2-py3: {extends: '.test_instance'}
125+
# default-arch-base-latest-2019-2-py2: {extends: '.test_instance'}
126+
# default-fedora-30-2018-3-py3: {extends: '.test_instance'}
127+
# default-debian-9-2018-3-py2: {extends: '.test_instance'}
128+
# default-ubuntu-1604-2018-3-py2: {extends: '.test_instance'}
129+
# default-centos-7-2018-3-py2: {extends: '.test_instance'}
130+
# default-opensuse-leap-151-2018-3-py2: {extends: '.test_instance'}
131+
# default-amazonlinux-1-2018-3-py2: {extends: '.test_instance'}
132+
# default-arch-base-latest-2018-3-py2: {extends: '.test_instance'}
133+
# default-debian-8-2017-7-py2: {extends: '.test_instance'}
134+
# default-ubuntu-1604-2017-7-py2: {extends: '.test_instance'}
135+
# default-centos-6-2017-7-py2: {extends: '.test_instance'}
136+
# default-fedora-30-2017-7-py2: {extends: '.test_instance'}
137+
# default-opensuse-leap-151-2017-7-py2: {extends: '.test_instance'}
138+
# default-amazonlinux-1-2017-7-py2: {extends: '.test_instance'}
139+
# default-arch-base-latest-2017-7-py2: {extends: '.test_instance'}
140+
141+
###############################################################################
142+
# `release` stage: `semantic-release`
143+
###############################################################################
144+
semantic-release:
145+
only: *only_branch_master_parent_repo
146+
stage: *stage_release
147+
image: *image_semanticrelease
148+
variables:
149+
MAINTAINER_TOKEN: '${GH_TOKEN}'
150+
script:
151+
# Update `AUTHORS.md`
152+
- '${HOME}/go/bin/maintainer contributor'
153+
# Run `semantic-release`
154+
- 'semantic-release'

.travis.yml

+19-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
# -*- coding: utf-8 -*-
22
# vim: ft=yaml
33
---
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+
################################################################################
413
## Machine config
514
os: 'linux'
615
arch: 'amd64'
@@ -22,8 +31,10 @@ script:
2231
## Stages and jobs matrix
2332
stages:
2433
- test
25-
- name: 'release'
26-
if: 'branch = master AND type != pull_request'
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'
2738
jobs:
2839
include:
2940
## Define the test stage that runs the linters (and testing matrix, if applicable)
@@ -72,30 +83,30 @@ jobs:
7283
## Define the rest of the matrix based on Kitchen testing
7384
# Make sure the instances listed below match up with
7485
# the `platforms` defined in `kitchen.yml`
75-
- env: INSTANCE=default-debian-10-master-py3
76-
- env: INSTANCE=default-ubuntu-1804-master-py3
86+
# - env: INSTANCE=default-debian-10-master-py3
87+
# - env: INSTANCE=default-ubuntu-1804-master-py3
7788
# - env: INSTANCE=default-centos-8-master-py3
7889
# - env: INSTANCE=default-fedora-31-master-py3
7990
# - env: INSTANCE=default-opensuse-leap-151-master-py3
8091
# - env: INSTANCE=default-amazonlinux-2-master-py3
8192
# - env: INSTANCE=default-debian-10-2019-2-py3
82-
- env: INSTANCE=default-debian-9-2019-2-py3
83-
- env: INSTANCE=default-ubuntu-1804-2019-2-py3
93+
# - env: INSTANCE=default-debian-9-2019-2-py3
94+
# - env: INSTANCE=default-ubuntu-1804-2019-2-py3
8495
# - env: INSTANCE=default-centos-8-2019-2-py3
8596
# - env: INSTANCE=default-fedora-31-2019-2-py3
8697
# - env: INSTANCE=default-opensuse-leap-151-2019-2-py3
8798
# - env: INSTANCE=default-centos-7-2019-2-py2
8899
# - env: INSTANCE=default-amazonlinux-2-2019-2-py3
89100
# - env: INSTANCE=default-arch-base-latest-2019-2-py2
90101
# - env: INSTANCE=default-fedora-30-2018-3-py3
91-
- env: INSTANCE=default-debian-9-2018-3-py2
102+
# - env: INSTANCE=default-debian-9-2018-3-py2
92103
# - env: INSTANCE=default-ubuntu-1604-2018-3-py2
93104
# - env: INSTANCE=default-centos-7-2018-3-py2
94105
# - env: INSTANCE=default-opensuse-leap-151-2018-3-py2
95106
# - env: INSTANCE=default-amazonlinux-1-2018-3-py2
96107
# - env: INSTANCE=default-arch-base-latest-2018-3-py2
97108
# - env: INSTANCE=default-debian-8-2017-7-py2
98-
- env: INSTANCE=default-ubuntu-1604-2017-7-py2
109+
# - env: INSTANCE=default-ubuntu-1604-2017-7-py2
99110
# - env: INSTANCE=default-centos-6-2017-7-py2
100111
# - env: INSTANCE=default-fedora-30-2017-7-py2
101112
# - env: INSTANCE=default-opensuse-leap-151-2017-7-py2

.yamllint

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ extends: default
99
# 2. Any SLS files under directory `test/`, which are actually state files
1010
# 3. Any YAML files under directory `.kitchen/`, introduced during local testing
1111
ignore: |
12+
.cache/
1213
node_modules/
1314
test/**/states/**/*.sls
1415
.kitchen/

CODEOWNERS

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919
/docs/AUTHORS.rst @saltstack-formulas/ssf
2020
/docs/CHANGELOG.rst @saltstack-formulas/ssf
2121
/docs/TOFS_pattern.rst @saltstack-formulas/ssf
22-
/icinga2/libsaltcli.jinja @saltstack-formulas/ssf
23-
/icinga2/libtofs.jinja @saltstack-formulas/ssf
22+
/*/libsaltcli.jinja @saltstack-formulas/ssf
23+
/*/libtofs.jinja @saltstack-formulas/ssf
2424
/test/integration/**/inspec.yml @saltstack-formulas/ssf
2525
/test/integration/**/README.md @saltstack-formulas/ssf
2626
/.gitignore @saltstack-formulas/ssf
2727
/.cirrus.yml @saltstack-formulas/ssf
28+
/.gitlab-ci.yml @saltstack-formulas/ssf
2829
/.pre-commit-config.yaml @saltstack-formulas/ssf
2930
/.rstcheck.cfg @saltstack-formulas/ssf
3031
/.rubocop.yml @saltstack-formulas/ssf

pre-commit_semantic-release.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ sed -i -e "s_^\(version:\).*_\1 ${1}_" FORMULA
1111
###############################################################################
1212

1313
# Install `m2r`
14-
sudo -H pip install m2r
14+
pip3 install m2r
1515

1616
# Copy and then convert the `.md` docs
1717
cp ./*.md docs/

release.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module.exports = {
22
branch: 'master',
3+
repositoryUrl: 'https://github.com/saltstack-formulas/icinga2-formula',
34
plugins: [
45
['@semantic-release/commit-analyzer', {
56
preset: 'angular',

0 commit comments

Comments
 (0)