# -*- coding: utf-8 -*- # vim: ft=yaml --- ############################################################################### # Define all YAML node anchors ############################################################################### .node_anchors: # `only` (also used for `except` where applicable) only_branch_master_parent_repo: &only_branch_master_parent_repo - 'master@saltstack-formulas/sysctl-formula' # `stage` stage_cache: &stage_cache 'cache' stage_lint: &stage_lint 'lint' stage_release: &stage_release 'release' stage_test: &stage_test 'test' # `image` # yamllint disable rule:line-length image_commitlint: &image_commitlint 'techneg/ci-commitlint:v1.1.156@sha256:90b61f1eadad21123849ef29ee63ba796aa74be868942fb4e623efd6ced4b624' image_dindruby: &image_dindruby 'techneg/ci-docker-python-ruby:v2.2.125@sha256:216120abc59355bd84b9dcad97d10f40884dbc41139971605eb8474f1a9e00b9' image_dindrubybionic: &image_dindrubybionic 'techneg/ci-docker-python-ruby:v2.2.125@sha256:216120abc59355bd84b9dcad97d10f40884dbc41139971605eb8474f1a9e00b9' image_precommit: &image_precommit 'techneg/ci-pre-commit:v2.5.58@sha256:56e0bf7d16560020b738a2378240643ccb399350a540e906ca1e27009ffe2d68' image_semantic-release: &image_semanticrelease 'techneg/ci-semantic-release:v1.2.58@sha256:723edbddfa534c7c137f09adec5fb2dfd6286d3fcb9c63688d7e5265ca4dd77e' # `services` services_docker_dind: &services_docker_dind - 'docker:29.8.0-dind@sha256:5efed980cba3fc126cf54e21a5a6ff8849d05b6e0623d6e7612f48e9cd6cd17e' # yamllint enable rule:line-length # `variables` # https://forum.gitlab.com/t/gitlab-com-ci-caching-rubygems/5627/3 # https://bundler.io/v2.3/man/bundle-config.1.html variables_bundler: &variables_bundler BUNDLE_PATH: '${CI_PROJECT_DIR}/.cache/bundler' BUNDLE_DEPLOYMENT: 'true' bundle_install: &bundle_install - 'bundle version' - 'bundle config list' # `--no-cache` means don't bother caching the downloaded .gem files - 'time bundle install --no-cache' cache_bundler: &cache_bundler key: files: - 'Gemfile.lock' prefix: 'bundler' paths: - '${BUNDLE_PATH}' # https://pre-commit.com/#gitlab-ci-example variables_pre-commit: &variables_pre-commit PRE_COMMIT_HOME: '${CI_PROJECT_DIR}/.cache/pre-commit' cache_pre-commit: &cache_pre-commit key: files: - '.pre-commit-config.yaml' prefix: 'pre-commit' paths: - '${PRE_COMMIT_HOME}' ############################################################################### # Define stages and global variables ############################################################################### stages: - *stage_cache - *stage_lint - *stage_test - *stage_release variables: DOCKER_DRIVER: 'overlay2' ############################################################################### # `cache` stage: build up the bundler cache required before the `test` stage ############################################################################### build-cache: stage: *stage_cache image: *image_dindruby variables: *variables_bundler cache: *cache_bundler script: *bundle_install ############################################################################### # `lint` stage: `commitlint`, `pre-commit` ############################################################################### .lint_job: stage: *stage_lint needs: [] commitlint: extends: '.lint_job' image: *image_commitlint rules: - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: never - when: on_success script: # Add `upstream` remote to get access to `upstream/master` - 'git remote add upstream https://gitlab.com/saltstack-formulas/sysctl-formula.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}"' # Run `commitlint` - 'commitlint --from "${COMMITLINT_FROM}" --to "${COMMITLINT_TO}" --verbose' pre-commit: extends: '.lint_job' image: *image_precommit # https://pre-commit.com/#gitlab-ci-example variables: *variables_pre-commit cache: *cache_pre-commit script: - 'pre-commit run --all-files --color always --verbose' - 'pre-commit run --color always --hook-stage manual commitlint-ci' ############################################################################### # Define `test` template ############################################################################### .test_instance: &test_instance stage: *stage_test image: *image_dindruby services: *services_docker_dind variables: *variables_bundler cache: <<: *cache_bundler policy: 'pull' before_script: *bundle_install script: - 'echo "Starting test job: ${CI_JOB_NAME}"' - 'bin/kitchen verify "${CI_JOB_NAME}"' ############################################################################### # Define `test` template (`allow_failure: true`) ############################################################################### .test_instance_failure_permitted: <<: *test_instance allow_failure: true ############################################################################### # `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` # yamllint disable rule:line-length # Fedora 41+ will permit failure until this PR is merged into kitchen-docker # https://github.com/test-kitchen/kitchen-docker/pull/427 is merged # OpenSUSE master branch will fail until zypperpkg module is back in salt core # https://github.com/saltstack/great-module-migration/issues/14 # almalinux-9-master: {extends: '.test_instance_failure_permitted'} almalinux-8-master: {extends: '.test_instance_failure_permitted'} amazonlinux-2023-master: {extends: '.test_instance_failure_permitted'} amazonlinux-2-master: {extends: '.test_instance_failure_permitted'} centos-stream9-master: {extends: '.test_instance_failure_permitted'} debian-13-master: {extends: '.test_instance_failure_permitted'} debian-12-master: {extends: '.test_instance_failure_permitted'} fedora-44-master: {extends: '.test_instance_failure_permitted'} fedora-43-master: {extends: '.test_instance_failure_permitted'} opensuse-leap-160-master: {extends: '.test_instance_failure_permitted'} opensuse-tmbl-latest-master: {extends: '.test_instance_failure_permitted'} oraclelinux-9-master: {extends: '.test_instance_failure_permitted'} oraclelinux-8-master: {extends: '.test_instance_failure_permitted'} rockylinux-9-master: {extends: '.test_instance_failure_permitted'} rockylinux-8-master: {extends: '.test_instance_failure_permitted'} ubuntu-2604-master: {extends: '.test_instance_failure_permitted'} ubuntu-2404-master: {extends: '.test_instance_failure_permitted'} ubuntu-2204-master: {extends: '.test_instance_failure_permitted'} almalinux-9-3008: {extends: '.test_instance'} almalinux-8-3008: {extends: '.test_instance'} amazonlinux-2023-3008: {extends: '.test_instance'} amazonlinux-2-3008: {extends: '.test_instance_failure_permitted'} centos-stream9-3008: {extends: '.test_instance'} debian-13-3008: {extends: '.test_instance'} debian-12-3008: {extends: '.test_instance'} fedora-44-3008: {extends: '.test_instance'} fedora-43-3008: {extends: '.test_instance'} opensuse-leap-160-3008: {extends: '.test_instance'} opensuse-tmbl-latest-3008: {extends: '.test_instance'} oraclelinux-9-3008: {extends: '.test_instance'} oraclelinux-8-3008: {extends: '.test_instance'} rockylinux-9-3008: {extends: '.test_instance'} rockylinux-8-3008: {extends: '.test_instance'} ubuntu-2604-3008: {extends: '.test_instance'} ubuntu-2404-3008: {extends: '.test_instance'} ubuntu-2204-3008: {extends: '.test_instance'} almalinux-9-3006: {extends: '.test_instance'} almalinux-8-3006: {extends: '.test_instance'} amazonlinux-2023-3006: {extends: '.test_instance'} amazonlinux-2-3006: {extends: '.test_instance_failure_permitted'} centos-stream9-3006: {extends: '.test_instance'} debian-13-3006: {extends: '.test_instance'} debian-12-3006: {extends: '.test_instance'} fedora-44-3006: {extends: '.test_instance'} fedora-43-3006: {extends: '.test_instance'} opensuse-leap-160-3006: {extends: '.test_instance'} opensuse-tmbl-latest-3006: {extends: '.test_instance'} oraclelinux-9-3006: {extends: '.test_instance'} oraclelinux-8-3006: {extends: '.test_instance'} rockylinux-9-3006: {extends: '.test_instance'} rockylinux-8-3006: {extends: '.test_instance'} ubuntu-2604-3006: {extends: '.test_instance'} ubuntu-2404-3006: {extends: '.test_instance'} ubuntu-2204-3006: {extends: '.test_instance'} # yamllint enable rule:line-length ############################################################################### # `release` stage: `semantic-release` ############################################################################### semantic-release: stage: *stage_release image: *image_semanticrelease variables: MAINTAINER_TOKEN: '${GH_TOKEN}' script: # Run `semantic-release` - 'semantic-release'