Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(gitlab-ci): use GitLab CI as Travis CI replacement #52

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 150 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
###############################################################################
# Define all YAML node anchors
###############################################################################
.node_anchors:
# `stage`
stage_lint: &stage_lint 'lint'
stage_release: &stage_release 'release'
stage_test: &stage_test 'test'
# `image`
image_commitlint: &image_commitlint 'myii/ssf-commitlint:11'
image_dindruby: &image_dindruby 'myii/ssf-dind-ruby:2.7.1-r3'
image_precommit: &image_precommit
name: 'myii/ssf-pre-commit:2.9.2'
entrypoint: ['/bin/bash', '-c']
image_semantic-release: &image_semanticrelease 'myii/ssf-semantic-release:15.14'
# `only` (also used for `except` where applicable)
only_branch_master_parent_repo: &only_branch_master_parent_repo
- 'master@saltstack-formulas/consul-formula'

###############################################################################
# Define stages and global variables
###############################################################################
stages:
- *stage_lint
- *stage_test
- *stage_release
variables:
DOCKER_DRIVER: 'overlay2'

###############################################################################
# `lint` stage: `commitlint` & `pre-commit`
###############################################################################
commitlint:
stage: *stage_lint
image: *image_commitlint
script:
# Add `upstream` remote to get access to `upstream/master`
- 'git remote add upstream ${CI_PROJECT_URL}.git'
- 'git fetch --all'
# Set default commit hashes for `--from` and `--to`
- 'export COMMITLINT_FROM="$(git merge-base upstream/master HEAD)"'
- 'export COMMITLINT_TO="${CI_COMMIT_SHA}"'
# `coqbot` adds a merge commit to test PRs on top of the latest commit in
# the repo; amend this merge commit message to avoid failure
- |
if [ "${GITLAB_USER_LOGIN}" = "coqbot" ] \
&& [ "${CI_COMMIT_BRANCH}" != "master" ]; then
git -c user.name='Null' -c user.email='null@example.com' commit --amend -m \
'chore: reword coqbot merge commit message for commitlint'
export COMMITLINT_TO=HEAD
fi
# Run `commitlint`
- 'commitlint --from "${COMMITLINT_FROM}"
--to "${COMMITLINT_TO}"
--verbose'

pre-commit:
stage: *stage_lint
image: *image_precommit
# https://pre-commit.com/#gitlab-ci-example
variables:
PRE_COMMIT_HOME: '${CI_PROJECT_DIR}/.cache/pre-commit'
cache:
key: '${CI_JOB_NAME}'
paths:
- '${PRE_COMMIT_HOME}'
script:
- 'pre-commit run --all-files --color always --verbose'

###############################################################################
# Define `test` template
###############################################################################
.test_instance:
stage: *stage_test
image: *image_dindruby
services:
- 'docker:dind'
# https://forum.gitlab.com/t/gitlab-com-ci-caching-rubygems/5627/3
# https://bundler.io/v1.16/bundle_config.html
variables:
BUNDLE_CACHE_PATH: '${CI_PROJECT_DIR}/.cache/bundler'
BUNDLE_WITHOUT: 'production'
cache:
key: '${CI_JOB_STAGE}'
paths:
- '${BUNDLE_CACHE_PATH}'
before_script:
# TODO: This should work from the env vars above automatically
- 'bundle config set path "${BUNDLE_CACHE_PATH}"'
- 'bundle config set without "${BUNDLE_WITHOUT}"'
- 'bundle install'
script:
# Alternative value to consider: `${CI_JOB_NAME}`
- 'bin/kitchen verify "${DOCKER_ENV_CI_JOB_NAME}"'

###############################################################################
# `test` stage: each instance below uses the `test` template above
###############################################################################
## 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`
default-debian-10-master-py3: {extends: '.test_instance'}
default-ubuntu-2004-master-py3: {extends: '.test_instance'}
# default-ubuntu-1804-master-py3: {extends: '.test_instance'}
default-centos-8-master-py3: {extends: '.test_instance'}
default-fedora-32-master-py3: {extends: '.test_instance'}
# default-fedora-31-master-py3: {extends: '.test_instance'}
# default-opensuse-leap-152-master-py3: {extends: '.test_instance'}
# default-amazonlinux-2-master-py3: {extends: '.test_instance'}
# default-debian-10-3000-3-py3: {extends: '.test_instance'}
# default-debian-9-3000-3-py3: {extends: '.test_instance'}
# default-ubuntu-1804-3000-3-py3: {extends: '.test_instance'}
# default-centos-8-3000-3-py3: {extends: '.test_instance'}
# default-centos-7-3000-3-py3: {extends: '.test_instance'}
# default-fedora-31-3000-3-py3: {extends: '.test_instance'}
default-opensuse-leap-152-3000-3-py3: {extends: '.test_instance'}
default-amazonlinux-2-3000-3-py3: {extends: '.test_instance'}
# default-ubuntu-1804-3000-3-py2: {extends: '.test_instance'}
# default-ubuntu-1604-3000-3-py2: {extends: '.test_instance'}
# default-arch-base-latest-3000-3-py2: {extends: '.test_instance'}
# default-debian-10-2019-2-py3: {extends: '.test_instance'}
# default-debian-9-2019-2-py3: {extends: '.test_instance'}
# default-ubuntu-1804-2019-2-py3: {extends: '.test_instance'}
# default-ubuntu-1604-2019-2-py3: {extends: '.test_instance'}
# default-centos-8-2019-2-py3: {extends: '.test_instance'}
# default-centos-7-2019-2-py3: {extends: '.test_instance'}
# default-fedora-31-2019-2-py3: {extends: '.test_instance'}
# default-opensuse-leap-152-2019-2-py3: {extends: '.test_instance'}
# default-amazonlinux-2-2019-2-py3: {extends: '.test_instance'}
# default-centos-6-2019-2-py2: {extends: '.test_instance'}
# default-amazonlinux-1-2019-2-py2: {extends: '.test_instance'}
default-arch-base-latest-2019-2-py2: {extends: '.test_instance'}

###############################################################################
# `release` stage: `semantic-release`
###############################################################################
semantic-release:
only: *only_branch_master_parent_repo
stage: *stage_release
image: *image_semanticrelease
variables:
MAINTAINER_TOKEN: '${GH_TOKEN}'
script:
# Update `AUTHORS.md`
- '${HOME}/go/bin/maintainer contributor'
# Run `semantic-release`
- 'semantic-release'
143 changes: 0 additions & 143 deletions .travis.yml

This file was deleted.

1 change: 1 addition & 0 deletions .yamllint
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ extends: default
# 2. Any SLS files under directory `test/`, which are actually state files
# 3. Any YAML files under directory `.kitchen/`, introduced during local testing
ignore: |
.cache/
node_modules/
test/**/states/**/*.sls
.kitchen/
Expand Down
1 change: 1 addition & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
/test/integration/**/README.md @saltstack-formulas/ssf
/.gitignore @saltstack-formulas/ssf
/.cirrus.yml @saltstack-formulas/ssf
/.gitlab-ci.yml @saltstack-formulas/ssf
/.pre-commit-config.yaml @saltstack-formulas/ssf
/.rstcheck.cfg @saltstack-formulas/ssf
/.rubocop.yml @saltstack-formulas/ssf
Expand Down
2 changes: 1 addition & 1 deletion pre-commit_semantic-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ sed -i -e "s_^\(version:\).*_\1 ${1}_" FORMULA
###############################################################################

# Install `m2r`
sudo -H pip install m2r
pip3 install m2r

# Copy and then convert the `.md` docs
cp ./*.md docs/
Expand Down
1 change: 1 addition & 0 deletions release.config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
module.exports = {
branch: 'master',
repositoryUrl: 'https://github.com/saltstack-formulas/consul-formula',
plugins: [
['@semantic-release/commit-analyzer', {
preset: 'angular',
Expand Down