99 only_branch_master_parent_repo : &only_branch_master_parent_repo
1010 - ' master@saltstack-formulas/packages-formula'
1111 # `stage`
12+ stage_cache : &stage_cache 'cache'
1213 stage_lint : &stage_lint 'lint'
1314 stage_release : &stage_release 'release'
1415 stage_test : &stage_test 'test'
1516 # `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_rubocop : &image_rubocop 'pipelinecomponents/rubocop:latest'
22- image_semantic-release : &image_semanticrelease 'myii/ssf-semantic-release:15.14'
17+ # yamllint disable rule:line-length
18+ image_commitlint : &image_commitlint 'techneg/ci-commitlint:v1.1.91@sha256:02574d0409adafb76d5a40a7d08202073e5377f4a7c4bfe9e198d1203ff94a8c '
19+ image_dindruby : &image_dindruby 'techneg/ci-docker-python-ruby:v2.2.60@sha256:de98b8d1d3cf86639fe69bfc4f0416115d18300759c5ed2948ac56f973dd944f'
20+ image_dindrubybionic : &image_dindrubybionic 'techneg/ci-docker-python-ruby:v2.2.60@sha256:de98b8d1d3cf86639fe69bfc4f0416115d18300759c5ed2948ac56f973dd944f '
21+ image_precommit : &image_precommit 'techneg/ci-pre-commit:v2.4.25@sha256:ff5192e893c1079fbf70e3ce6bfc3773815041786a75659793158be930ba7803'
22+ image_rubocop : &image_rubocop 'pipelinecomponents/rubocop:latest@sha256:fe69f9642c7edde46bbd78326d2c42c6e13fc73694efb142e92e206725479328 '
23+ image_semantic-release : &image_semanticrelease 'myii/ssf-semantic-release:15.14@sha256:374f588420087517a3cc0235e11293bffd72d7a59da3d98d5e69f014ff2a7761 '
2324 # `services`
2425 services_docker_dind : &services_docker_dind
25- - ' docker:dind'
26+ - ' docker:28.2.2-dind@sha256:d4668861cabc1691635d98e827a81cfa834a416f8fe0f4efc609f9f806d86d82'
27+ # yamllint enable rule:line-length
2628 # `variables`
2729 # https://forum.gitlab.com/t/gitlab-com-ci-caching-rubygems/5627/3
28- # https://bundler.io/v1.16/bundle_config .html
30+ # https://bundler.io/v2.3/man/bundle-config.1 .html
2931 variables_bundler : &variables_bundler
30- BUNDLE_CACHE_PATH : ' ${CI_PROJECT_DIR}/.cache/bundler'
31- BUNDLE_WITHOUT : ' production'
32- # `cache`
32+ BUNDLE_PATH : ' ${CI_PROJECT_DIR}/.cache/bundler'
33+ BUNDLE_DEPLOYMENT : ' true'
34+ bundle_install : &bundle_install
35+ - ' bundle version'
36+ - ' bundle config list'
37+ # `--no-cache` means don't bother caching the downloaded .gem files
38+ - ' time bundle install --no-cache'
3339 cache_bundler : &cache_bundler
34- key : ' ${CI_JOB_STAGE}'
40+ key :
41+ files :
42+ - ' Gemfile.lock'
43+ prefix : ' bundler'
3544 paths :
36- - ' ${BUNDLE_CACHE_PATH}'
45+ - ' ${BUNDLE_PATH}'
46+ # https://pre-commit.com/#gitlab-ci-example
47+ variables_pre-commit : &variables_pre-commit
48+ PRE_COMMIT_HOME : ' ${CI_PROJECT_DIR}/.cache/pre-commit'
49+ cache_pre-commit : &cache_pre-commit
50+ key :
51+ files :
52+ - ' .pre-commit-config.yaml'
53+ prefix : ' pre-commit'
54+ paths :
55+ - ' ${PRE_COMMIT_HOME}'
3756
3857# ##############################################################################
3958# Define stages and global variables
4059# ##############################################################################
4160stages :
61+ - *stage_cache
4262 - *stage_lint
4363 - *stage_test
4464 - *stage_release
@@ -48,8 +68,12 @@ variables:
4868# ##############################################################################
4969# `lint` stage: `commitlint`, `pre-commit` & `rubocop` (latest, failure allowed)
5070# ##############################################################################
51- commitlint :
71+ .lint_job :
5272 stage : *stage_lint
73+ needs : []
74+
75+ commitlint :
76+ extends : ' .lint_job'
5377 image : *image_commitlint
5478 script :
5579 # Add `upstream` remote to get access to `upstream/master`
@@ -74,17 +98,14 @@ commitlint:
7498 --verbose'
7599
76100pre-commit :
77- stage : *stage_lint
101+ extends : ' .lint_job '
78102 image : *image_precommit
79103 # https://pre-commit.com/#gitlab-ci-example
80- variables :
81- PRE_COMMIT_HOME : ' ${CI_PROJECT_DIR}/.cache/pre-commit'
82- cache :
83- key : ' ${CI_JOB_NAME}'
84- paths :
85- - ' ${PRE_COMMIT_HOME}'
104+ variables : *variables_pre-commit
105+ cache : *cache_pre-commit
86106 script :
87107 - ' pre-commit run --all-files --color always --verbose'
108+ - ' pre-commit run --color always --hook-stage manual commitlint-ci'
88109
89110# Use a separate job for `rubocop` other than the one potentially run by `pre-commit`
90111# - The `pre-commit` check will only be available for formulas that pass the default
@@ -93,8 +114,8 @@ pre-commit:
93114# - Furthermore, this job uses all of the latest `rubocop` features & cops,
94115# which will help when upgrading the `rubocop` linter used in `pre-commit`
95116rubocop :
117+ extends : ' .lint_job'
96118 allow_failure : true
97- stage : *stage_lint
98119 image : *image_rubocop
99120 script :
100121 - ' rubocop -d -P -S --enable-pending-cops'
@@ -107,12 +128,10 @@ rubocop:
107128 image : *image_dindruby
108129 services : *services_docker_dind
109130 variables : *variables_bundler
110- cache : *cache_bundler
111- before_script :
112- # TODO: This should work from the env vars above automatically
113- - ' bundle config set path "${BUNDLE_CACHE_PATH}"'
114- - ' bundle config set without "${BUNDLE_WITHOUT}"'
115- - ' bundle install'
131+ cache :
132+ << : *cache_bundler
133+ policy : ' pull'
134+ before_script : *bundle_install
116135 script :
117136 # Alternative value to consider: `${CI_JOB_NAME}`
118137 - ' bin/kitchen verify "${DOCKER_ENV_CI_JOB_NAME}"'
@@ -131,69 +150,24 @@ rubocop:
131150# Make sure the instances listed below match up with
132151# the `platforms` defined in `kitchen.yml`
133152# yamllint disable rule:line-length
134- # debian-debian-11-tiamat-py3: {extends: '.test_instance'}
135- # debian-debian-10-tiamat-py3: {extends: '.test_instance'}
136- # debian-debian-9-tiamat-py3: {extends: '.test_instance'}
137- # ubuntu-ubuntu-2204-tiamat-py3: {extends: '.test_instance_failure_permitted'}
138- # ubuntu-ubuntu-2004-tiamat-py3: {extends: '.test_instance'}
139- # ubuntu-ubuntu-1804-tiamat-py3: {extends: '.test_instance'}
140- # redhat8-centos-stream8-tiamat-py3: {extends: '.test_instance_failure_permitted'}
141- # centos-centos-7-tiamat-py3: {extends: '.test_instance'}
142- # amazon-amazonlinux-2-tiamat-py3: {extends: '.test_instance'}
143- # redhat8-oraclelinux-8-tiamat-py3: {extends: '.test_instance'}
144- # centos-oraclelinux-7-tiamat-py3: {extends: '.test_instance'}
145- # redhat8-almalinux-8-tiamat-py3: {extends: '.test_instance'}
146- # redhat8-rockylinux-8-tiamat-py3: {extends: '.test_instance'}
147- debian-debian-11-master-py3 : {extends: '.test_instance_failure_permitted'}
148- debian-debian-10-master-py3 : {extends: '.test_instance'}
149- debian-debian-9-master-py3 : {extends: '.test_instance'}
150- # ubuntu-ubuntu-2204-master-py3: {extends: '.test_instance_failure_permitted'}
151- # ubuntu-ubuntu-2004-master-py3: {extends: '.test_instance'}
152- ubuntu-ubuntu-1804-master-py3 : {extends: '.test_instance'}
153- redhat8-centos-stream8-master-py3 : {extends: '.test_instance_failure_permitted'}
154- centos-centos-7-master-py3 : {extends: '.test_instance'}
155- # fedora-fedora-36-master-py3: {extends: '.test_instance_failure_permitted'}
156- # fedora-fedora-35-master-py3: {extends: '.test_instance'}
157- suse-opensuse-leap-153-master-py3 : {extends: '.test_instance'}
158- suse-opensuse-tmbl-latest-master-py3 : {extends: '.test_instance_failure_permitted'}
159- amazon-amazonlinux-2-master-py3 : {extends: '.test_instance'}
160- redhat8-oraclelinux-8-master-py3 : {extends: '.test_instance'}
161- centos-oraclelinux-7-master-py3 : {extends: '.test_instance'}
162- arch-arch-base-latest-master-py3 : {extends: '.test_instance'}
163- gentoo-gentoo-stage3-latest-master-py3 : {extends: '.test_instance'}
164- gentoo-gentoo-stage3-systemd-master-py3 : {extends: '.test_instance'}
165- redhat8-almalinux-8-master-py3 : {extends: '.test_instance'}
166- redhat8-rockylinux-8-master-py3 : {extends: '.test_instance'}
167- # debian-debian-11-3004-1-py3: {extends: '.test_instance'}
168- # debian-debian-10-3004-1-py3: {extends: '.test_instance'}
169- # debian-debian-9-3004-1-py3: {extends: '.test_instance'}
170- # ubuntu-ubuntu-2204-3004-1-py3: {extends: '.test_instance_failure_permitted'}
171- # ubuntu-ubuntu-2004-3004-1-py3: {extends: '.test_instance'}
172- # ubuntu-ubuntu-1804-3004-1-py3: {extends: '.test_instance'}
173- # redhat8-centos-stream8-3004-1-py3: {extends: '.test_instance_failure_permitted'}
174- # centos-centos-7-3004-1-py3: {extends: '.test_instance'}
175- # fedora-fedora-36-3004-1-py3: {extends: '.test_instance_failure_permitted'}
176- # fedora-fedora-35-3004-1-py3: {extends: '.test_instance'}
177- # amazon-amazonlinux-2-3004-1-py3: {extends: '.test_instance'}
178- # redhat8-oraclelinux-8-3004-1-py3: {extends: '.test_instance'}
179- # centos-oraclelinux-7-3004-1-py3: {extends: '.test_instance'}
180- # arch-arch-base-latest-3004-1-py3: {extends: '.test_instance'}
181- # gentoo-gentoo-stage3-latest-3004-1-py3: {extends: '.test_instance'}
182- # gentoo-gentoo-stage3-systemd-3004-1-py3: {extends: '.test_instance'}
183- # redhat8-almalinux-8-3004-1-py3: {extends: '.test_instance'}
184- # redhat8-rockylinux-8-3004-1-py3: {extends: '.test_instance'}
185- # suse-opensuse-leap-153-3004-0-py3: {extends: '.test_instance'}
186- # suse-opensuse-tmbl-latest-3004-0-py3: {extends: '.test_instance_failure_permitted'}
187- # debian-debian-10-3003-4-py3: {extends: '.test_instance'}
188- # debian-debian-9-3003-4-py3: {extends: '.test_instance'}
189- # ubuntu-ubuntu-2004-3003-4-py3: {extends: '.test_instance'}
190- # ubuntu-ubuntu-1804-3003-4-py3: {extends: '.test_instance'}
191- # redhat8-centos-stream8-3003-4-py3: {extends: '.test_instance_failure_permitted'}
192- # centos-centos-7-3003-4-py3: {extends: '.test_instance'}
193- # amazon-amazonlinux-2-3003-4-py3: {extends: '.test_instance'}
194- # redhat8-oraclelinux-8-3003-4-py3: {extends: '.test_instance'}
195- # centos-oraclelinux-7-3003-4-py3: {extends: '.test_instance'}
196- # redhat8-almalinux-8-3003-4-py3: {extends: '.test_instance'}
153+ debian-debian-12-master : {extends: '.test_instance'}
154+ debian-debian-11-master : {extends: '.test_instance'}
155+ debian-debian-12-3007-4 : {extends: '.test_instance'}
156+ debian-debian-11-3007-4 : {extends: '.test_instance'}
157+ debian-debian-12-3006-12 : {extends: '.test_instance'}
158+ debian-debian-11-3006-12 : {extends: '.test_instance'}
159+ ubuntu-ubuntu-2404-master : {extends: '.test_instance'}
160+ ubuntu-ubuntu-2204-master : {extends: '.test_instance'}
161+ ubuntu-ubuntu-2404-3007-4 : {extends: '.test_instance'}
162+ ubuntu-ubuntu-2204-3007-4 : {extends: '.test_instance'}
163+ ubuntu-ubuntu-2404-3006-12 : {extends: '.test_instance'}
164+ ubuntu-ubuntu-2204-3006-12 : {extends: '.test_instance'}
165+ fedora-fedora-40-master : {extends: '.test_instance'}
166+ fedora-fedora-40-3007-4 : {extends: '.test_instance'}
167+ fedora-fedora-40-3006-12 : {extends: '.test_instance'}
168+ suse-opensuse-leap-156-master : {extends: '.test_instance'}
169+ suse-opensuse-leap-156-3007-4 : {extends: '.test_instance'}
170+ suse-opensuse-leap-156-3006-12 : {extends: '.test_instance'}
197171# yamllint enable rule:line-length
198172
199173# ##############################################################################
0 commit comments