diff --git a/.copier-answers.ssf-ci.yml b/.copier-answers.ssf-ci.yml new file mode 100644 index 0000000..e75a410 --- /dev/null +++ b/.copier-answers.ssf-ci.yml @@ -0,0 +1,23 @@ +# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY +_commit: v2.10.6 +_src_path: https://github.com/dafyddj/copier-ssf-ci +failure_permitted_ignored: [] +failure_permitted_patterns: [] +formula_name: sysctl +release_using_gha: false +renovate_extend_presets: +- github>saltstack-formulas/.github +- github>saltstack-formulas/.github:copier +renovate_ignore_presets: [] +supported_oses: +- AlmaLinux OS +- Amazon Linux +- CentOS +- Debian +- Fedora Linux +- openSUSE +- Oracle Linux +- Rocky Linux +- Ubuntu +test_using_gha: false +using_probot_settings: false diff --git a/.github/renovate.json5 b/.github/renovate.json5 new file mode 100644 index 0000000..1fe72da --- /dev/null +++ b/.github/renovate.json5 @@ -0,0 +1,11 @@ +{ +$schema: 'https://docs.renovatebot.com/renovate-schema.json', +extends: [ + "github>saltstack-formulas/.github", + "github>saltstack-formulas/.github:copier" +], +/********************************************************** + * This file is managed as part of a Copier template. * + * Please make your own changes below this comment. * + *********************************************************/ +} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..ee0e375 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,84 @@ +--- +name: Test & release + +'on': + - pull_request + - push + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != format('refs/heads/{0}', + github.event.repository.default_branch) }} + +jobs: + should-run: + name: Prep / Should run + runs-on: ubuntu-latest + timeout-minutes: 5 + outputs: + should-run: ${{ steps.action.outputs.should-run }} + steps: + - id: action + # yamllint disable-line rule:line-length + uses: techneg-it/should-workflow-run@eff19348eb884f57e05bc6f05ae48ece3af14714 # v1.0.1 + pre-commit: + name: Lint / `pre-commit` + needs: should-run + if: fromJSON(needs.should-run.outputs.should-run) + container: techneg/ci-pre-commit:v2.5.28@sha256:fb14ff152879618c500efa8eac55a6937b34f10e3b86e6d4869b7eb532618c09 + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - run: | # Needed because of bug #2031 in `actions/checkout` + git config --global --add safe.directory "$GITHUB_WORKSPACE" + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + fetch-tags: true + filter: tree:0 + - name: Export `CI_CACHE_ID` from container + run: echo "CI_CACHE_ID=$(cat /.ci_cache_id)" >> $GITHUB_ENV + - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + with: + path: ~/.cache/pre-commit + key: "${{ env.CI_CACHE_ID }}|\ + ${{ hashFiles('.pre-commit-config.yaml') }}" + restore-keys: | + ${{ env.CI_CACHE_ID }}| + - name: Build cache + run: | + pre-commit gc + echo "Installing hook environments..." + time -f "Hook installation took %E" pre-commit install-hooks + - name: Run `pre-commit` + run: | + pre-commit run --all-files --color always --verbose + pre-commit run --color always --hook-stage manual --verbose commitlint-ci + results: + name: Release / Collect results + permissions: + contents: write + issues: write + pull-requests: write + checks: read + container: techneg/ci-semantic-release:v1.2.26@sha256:e736e32f69db7c51205c06fd5538731fddfa9c6339d0571e7ec8ce9250b8f962 + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - run: | # Needed due to bug actions/checkout#2031 + git config --global --add safe.directory "$GITHUB_WORKSPACE" + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + # yamllint disable-line rule:line-length + - uses: poseidon/wait-for-status-checks@899c768d191b56eef585c18f8558da19e1f3e707 # v0.6.0 + with: + ignore: > + Release / Collect results + ignore_pattern: ^GitLab CI + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run `semantic-release` + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + MAINTAINER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + semantic-release --dry-run + - run: echo "::notice ::Workflow success!" diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 141f38d..45d4362 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,47 +9,82 @@ 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` - 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_rubocop: &image_rubocop 'pipelinecomponents/rubocop:latest' - image_semantic-release: &image_semanticrelease 'myii/ssf-semantic-release:15.14' + # yamllint disable rule:line-length + image_commitlint: &image_commitlint 'techneg/ci-commitlint:v1.1.125@sha256:95edb563e9b61ea9038ace01554278cbb3b8c9932055ab78b0855fd3d3ed3693' + image_dindruby: &image_dindruby 'techneg/ci-docker-python-ruby:v2.2.95@sha256:fdb4de0e087516903839f93827ff5dc7a72fcc39523c0bd6e312309311faf95b' + image_dindrubybionic: &image_dindrubybionic 'techneg/ci-docker-python-ruby:v2.2.95@sha256:fdb4de0e087516903839f93827ff5dc7a72fcc39523c0bd6e312309311faf95b' + image_precommit: &image_precommit 'techneg/ci-pre-commit:v2.5.28@sha256:fb14ff152879618c500efa8eac55a6937b34f10e3b86e6d4869b7eb532618c09' + image_rubocop: &image_rubocop 'pipelinecomponents/rubocop:latest@sha256:74850471782195453cdf91f4a5edf62b6fcc3365c124d4d975c7e87a702040d7' + image_semantic-release: &image_semanticrelease 'techneg/ci-semantic-release:v1.2.26@sha256:e736e32f69db7c51205c06fd5538731fddfa9c6339d0571e7ec8ce9250b8f962' # `services` services_docker_dind: &services_docker_dind - - 'docker:dind' + - 'docker:29.2.1-dind@sha256:8bcbad4b45f0bff9d3e809d85a7ac589390f0be8acbc526850c998c35c1243fd' + # yamllint enable rule:line-length # `variables` # https://forum.gitlab.com/t/gitlab-com-ci-caching-rubygems/5627/3 - # https://bundler.io/v1.16/bundle_config.html + # https://bundler.io/v2.3/man/bundle-config.1.html variables_bundler: &variables_bundler - BUNDLE_CACHE_PATH: '${CI_PROJECT_DIR}/.cache/bundler' - BUNDLE_WITHOUT: 'production' - # `cache` + 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: '${CI_JOB_STAGE}' + key: + files: + - 'Gemfile.lock' + prefix: 'bundler' paths: - - '${BUNDLE_CACHE_PATH}' + - '${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` & `rubocop` (latest, failure allowed) ############################################################################### -commitlint: +.lint_job: stage: *stage_lint + needs: [] + +commitlint: + extends: '.lint_job' image: *image_commitlint script: # Add `upstream` remote to get access to `upstream/master` @@ -59,32 +94,20 @@ commitlint: # 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 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 + extends: '.lint_job' 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}' + 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' # Use a separate job for `rubocop` other than the one potentially run by `pre-commit` # - The `pre-commit` check will only be available for formulas that pass the default @@ -93,8 +116,8 @@ pre-commit: # - Furthermore, this job uses all of the latest `rubocop` features & cops, # which will help when upgrading the `rubocop` linter used in `pre-commit` rubocop: + extends: '.lint_job' allow_failure: true - stage: *stage_lint image: *image_rubocop script: - 'rubocop -d -P -S --enable-pending-cops' @@ -107,15 +130,13 @@ rubocop: image: *image_dindruby services: *services_docker_dind variables: *variables_bundler - cache: *cache_bundler - 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' + cache: + <<: *cache_bundler + policy: 'pull' + before_script: *bundle_install script: - # Alternative value to consider: `${CI_JOB_NAME}` - - 'bin/kitchen verify "${DOCKER_ENV_CI_JOB_NAME}"' + - 'echo "Starting test job: ${CI_JOB_NAME}"' + - 'bin/kitchen verify "${CI_JOB_NAME}"' ############################################################################### # Define `test` template (`allow_failure: true`) @@ -131,82 +152,75 @@ rubocop: # Make sure the instances listed below match up with # the `platforms` defined in `kitchen.yml` # yamllint disable rule:line-length -# default-debian-11-tiamat-py3: {extends: '.test_instance'} -# default-debian-10-tiamat-py3: {extends: '.test_instance'} -# default-debian-9-tiamat-py3: {extends: '.test_instance'} -# default-ubuntu-2204-tiamat-py3: {extends: '.test_instance_failure_permitted'} -# default-ubuntu-2004-tiamat-py3: {extends: '.test_instance'} -# default-ubuntu-1804-tiamat-py3: {extends: '.test_instance'} -# default-centos-stream8-tiamat-py3: {extends: '.test_instance_failure_permitted'} -# default-centos-7-tiamat-py3: {extends: '.test_instance'} -# default-amazonlinux-2-tiamat-py3: {extends: '.test_instance'} -# default-oraclelinux-8-tiamat-py3: {extends: '.test_instance'} -# default-oraclelinux-7-tiamat-py3: {extends: '.test_instance'} -# default-almalinux-8-tiamat-py3: {extends: '.test_instance'} -# default-rockylinux-8-tiamat-py3: {extends: '.test_instance'} -default-debian-11-master-py3: {extends: '.test_instance'} -default-debian-10-master-py3: {extends: '.test_instance'} -default-debian-9-master-py3: {extends: '.test_instance'} -default-ubuntu-2204-master-py3: {extends: '.test_instance_failure_permitted'} -default-ubuntu-2004-master-py3: {extends: '.test_instance'} -default-ubuntu-1804-master-py3: {extends: '.test_instance'} -default-centos-stream8-master-py3: {extends: '.test_instance_failure_permitted'} -default-centos-7-master-py3: {extends: '.test_instance'} -default-fedora-36-master-py3: {extends: '.test_instance_failure_permitted'} -default-fedora-35-master-py3: {extends: '.test_instance'} -default-opensuse-leap-153-master-py3: {extends: '.test_instance'} -default-opensuse-tmbl-latest-master-py3: {extends: '.test_instance_failure_permitted'} -default-amazonlinux-2-master-py3: {extends: '.test_instance'} -default-oraclelinux-8-master-py3: {extends: '.test_instance'} -default-oraclelinux-7-master-py3: {extends: '.test_instance'} -default-arch-base-latest-master-py3: {extends: '.test_instance'} -default-gentoo-stage3-latest-master-py3: {extends: '.test_instance'} -default-gentoo-stage3-systemd-master-py3: {extends: '.test_instance'} -default-almalinux-8-master-py3: {extends: '.test_instance'} -default-rockylinux-8-master-py3: {extends: '.test_instance'} -# default-debian-11-3004-1-py3: {extends: '.test_instance'} -# default-debian-10-3004-1-py3: {extends: '.test_instance'} -# default-debian-9-3004-1-py3: {extends: '.test_instance'} -# default-ubuntu-2204-3004-1-py3: {extends: '.test_instance_failure_permitted'} -# default-ubuntu-2004-3004-1-py3: {extends: '.test_instance'} -# default-ubuntu-1804-3004-1-py3: {extends: '.test_instance'} -# default-centos-stream8-3004-1-py3: {extends: '.test_instance_failure_permitted'} -# default-centos-7-3004-1-py3: {extends: '.test_instance'} -# default-fedora-36-3004-1-py3: {extends: '.test_instance_failure_permitted'} -# default-fedora-35-3004-1-py3: {extends: '.test_instance'} -# default-amazonlinux-2-3004-1-py3: {extends: '.test_instance'} -# default-oraclelinux-8-3004-1-py3: {extends: '.test_instance'} -# default-oraclelinux-7-3004-1-py3: {extends: '.test_instance'} -# default-arch-base-latest-3004-1-py3: {extends: '.test_instance'} -# default-gentoo-stage3-latest-3004-1-py3: {extends: '.test_instance'} -# default-gentoo-stage3-systemd-3004-1-py3: {extends: '.test_instance'} -# default-almalinux-8-3004-1-py3: {extends: '.test_instance'} -# default-rockylinux-8-3004-1-py3: {extends: '.test_instance'} -# default-opensuse-leap-153-3004-0-py3: {extends: '.test_instance'} -# default-opensuse-tmbl-latest-3004-0-py3: {extends: '.test_instance_failure_permitted'} -# default-debian-10-3003-4-py3: {extends: '.test_instance'} -# default-debian-9-3003-4-py3: {extends: '.test_instance'} -# default-ubuntu-2004-3003-4-py3: {extends: '.test_instance'} -# default-ubuntu-1804-3003-4-py3: {extends: '.test_instance'} -# default-centos-stream8-3003-4-py3: {extends: '.test_instance_failure_permitted'} -# default-centos-7-3003-4-py3: {extends: '.test_instance'} -# default-amazonlinux-2-3003-4-py3: {extends: '.test_instance'} -# default-oraclelinux-8-3003-4-py3: {extends: '.test_instance'} -# default-oraclelinux-7-3003-4-py3: {extends: '.test_instance'} -# default-almalinux-8-3003-4-py3: {extends: '.test_instance'} +# 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-12-master: {extends: '.test_instance_failure_permitted'} +debian-11-master: {extends: '.test_instance_failure_permitted'} +fedora-41-master: {extends: '.test_instance_failure_permitted'} +fedora-40-master: {extends: '.test_instance_failure_permitted'} +opensuse-leap-156-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-2404-master: {extends: '.test_instance_failure_permitted'} +ubuntu-2204-master: {extends: '.test_instance_failure_permitted'} +ubuntu-2004-master: {extends: '.test_instance_failure_permitted'} +almalinux-9-3007: {extends: '.test_instance'} +almalinux-8-3007: {extends: '.test_instance'} +amazonlinux-2023-3007: {extends: '.test_instance'} +amazonlinux-2-3007: {extends: '.test_instance_failure_permitted'} +centos-stream9-3007: {extends: '.test_instance'} +debian-12-3007: {extends: '.test_instance'} +debian-11-3007: {extends: '.test_instance'} +fedora-41-3007: {extends: '.test_instance_failure_permitted'} +fedora-40-3007: {extends: '.test_instance'} +opensuse-leap-156-3007: {extends: '.test_instance'} +opensuse-tmbl-latest-3007: {extends: '.test_instance'} +oraclelinux-9-3007: {extends: '.test_instance'} +oraclelinux-8-3007: {extends: '.test_instance'} +rockylinux-9-3007: {extends: '.test_instance'} +rockylinux-8-3007: {extends: '.test_instance'} +ubuntu-2404-3007: {extends: '.test_instance'} +ubuntu-2204-3007: {extends: '.test_instance'} +ubuntu-2004-3007: {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-12-3006: {extends: '.test_instance'} +debian-11-3006: {extends: '.test_instance'} +fedora-41-3006: {extends: '.test_instance_failure_permitted'} +fedora-40-3006: {extends: '.test_instance'} +opensuse-leap-156-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-2404-3006: {extends: '.test_instance'} +ubuntu-2204-3006: {extends: '.test_instance'} +ubuntu-2004-3006: {extends: '.test_instance'} # yamllint enable rule:line-length ############################################################################### # `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' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1299a84..e6ec06b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,57 +15,79 @@ ci: autoupdate_schedule: quarterly skip: [] submodules: false -default_stages: [commit] +default_stages: [pre-commit] repos: - - repo: https://github.com/dafyddj/commitlint-pre-commit-hook - rev: v2.3.0 + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: check-merge-conflict + name: Check for Git merge conflicts + args: [--assume-in-merge] + exclude: ^docs/AUTHORS.rst$ + - repo: https://github.com/dafyddj/mirrors-commitlint + rev: v19.8.1 hooks: - id: commitlint - name: Check commit message using commitlint - description: Lint commit message against @commitlint/config-conventional rules - stages: [commit-msg] - additional_dependencies: ['@commitlint/config-conventional@8.3.4'] - - id: commitlint-travis - stages: [manual] - additional_dependencies: ['@commitlint/config-conventional@8.3.4'] - always_run: true + - id: commitlint-ci - repo: https://github.com/rubocop-hq/rubocop - rev: v1.30.1 + rev: v1.84.1 hooks: - id: rubocop name: Check Ruby files with rubocop args: [--debug] - always_run: true - pass_filenames: false - repo: https://github.com/shellcheck-py/shellcheck-py - rev: v0.8.0.4 + rev: v0.9.0.6 hooks: - id: shellcheck name: Check shell scripts with shellcheck files: ^.*\.(sh|bash|ksh)$ types: [] - repo: https://github.com/adrienverge/yamllint - rev: v1.26.3 + rev: v1.38.0 hooks: - id: yamllint name: Check YAML syntax with yamllint - args: [--strict, '.'] - always_run: true - pass_filenames: false + args: [--strict] + types: [file] + # Files to include + # 1. Obvious YAML files + # 2. `pillar.example` and similar files + # 3. SLS files under directory `test/` which are pillar files + # Files to exclude + # 1. SLS files under directory `test/` which are state files + # 2. `kitchen.vagrant.yml`, which contains Embedded Ruby (ERB) template syntax + # 3. YAML files heavily reliant on Jinja + # 4. `.copier-answers.yml` and its variants which are auto-generated + files: | + (?x)^( + .*\.yaml| + .*\.yml| + \.salt-lint| + \.yamllint| + .*\.example| + test/.*\.sls + )$ + exclude: | + (?x)^( + \.copier-answers(\..+)?\.ya?ml| + kitchen.vagrant.yml| + test/.*/states/.*\.sls + )$ - repo: https://github.com/warpnet/salt-lint - rev: v0.8.0 + rev: v0.9.2 hooks: - id: salt-lint name: Check Salt files using salt-lint files: ^.*\.(sls|jinja|j2|tmpl|tst)$ - - repo: https://github.com/myint/rstcheck - rev: 3f929574 + - repo: https://github.com/rstcheck/rstcheck + rev: v6.2.5 hooks: - id: rstcheck name: Check reST files using rstcheck exclude: 'docs/CHANGELOG.rst' + additional_dependencies: [sphinx==7.2.6] - repo: https://github.com/saltstack-formulas/mirrors-rst-lint - rev: v1.3.2 + rev: v1.4.0 hooks: - id: rst-lint name: Check reST files using rst-lint @@ -73,5 +95,26 @@ repos: (?x)^( docs/CHANGELOG.rst| docs/TOFS_pattern.rst| + docs/CONTRIBUTING_DOCS.rst| + docs/index.rst| )$ - additional_dependencies: [pygments==2.9.0] + additional_dependencies: [pygments==2.16.1] + - repo: https://github.com/renovatebot/pre-commit-hooks + rev: 42.95.1 + hooks: + - id: renovate-config-validator + name: Check Renovate config with renovate-config-validator + - repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.36.1 + hooks: + - id: check-github-workflows + name: Check GitHub workflows with check-jsonschema + args: [--verbose] + - id: check-gitlab-ci + name: Check GitLab CI config with check-jsonschema + args: [--verbose] + - repo: https://github.com/standard/standard + rev: v17.1.2 + hooks: + - id: standard + name: Check JavaScript files using standardJS diff --git a/.rstcheck.cfg b/.rstcheck.cfg index 5383623..0daee68 100644 --- a/.rstcheck.cfg +++ b/.rstcheck.cfg @@ -1,4 +1,6 @@ [rstcheck] report=info ignore_language=rst -ignore_messages=(Duplicate (ex|im)plicit target.*|Hyperlink target ".*" is not referenced\.$) +# salt['config.get']('roles') is misidentified as a Markdown link. +# Ignore for now, but perhaps try to submit a fix upstream in rstcheck +ignore_messages=(Duplicate (ex|im)plicit target.*|Hyperlink target ".*" is not referenced\.$|\(rst\) Link is formatted in Markdown style\.) diff --git a/.rubocop.yml b/.rubocop.yml index bf4d107..b7762c4 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -7,7 +7,7 @@ Layout/LineLength: # Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`) Max: 88 Metrics/BlockLength: - IgnoredMethods: + AllowedMethods: - control - describe # Increase from default of `25` diff --git a/.yamllint b/.yamllint index 716baaf..20e95e6 100644 --- a/.yamllint +++ b/.yamllint @@ -4,34 +4,9 @@ # Extend the `default` configuration provided by `yamllint` extends: 'default' -# Files to ignore completely -# 1. All YAML files under directory `.bundle/`, introduced if gems are installed locally -# 2. All YAML files under directory `.cache/`, introduced during the CI run -# 3. All YAML files under directory `.git/` -# 4. All YAML files under directory `node_modules/`, introduced during the CI run -# 5. Any SLS files under directory `test/`, which are actually state files -# 6. Any YAML files under directory `.kitchen/`, introduced during local testing -# 7. `kitchen.vagrant.yml`, which contains Embedded Ruby (ERB) template syntax -ignore: | - .bundle/ - .cache/ - .git/ - node_modules/ - test/**/states/**/*.sls - .kitchen/ - kitchen.vagrant.yml - -yaml-files: - # Default settings - - '*.yaml' - - '*.yml' - - .salt-lint - - .yamllint - # SaltStack Formulas additional settings - - '*.example' - - test/**/*.sls - rules: + comments: + min-spaces-from-content: 1 empty-values: forbid-in-block-mappings: true forbid-in-flow-mappings: true @@ -39,6 +14,7 @@ rules: # Increase from default of `80` # Based on https://github.com/PyCQA/flake8-bugbear#opinionated-warnings (`B950`) max: 88 + allow-non-breakable-inline-mappings: true octal-values: forbid-implicit-octal: true forbid-explicit-octal: true diff --git a/Gemfile b/Gemfile index 12d9b1d..d960687 100644 --- a/Gemfile +++ b/Gemfile @@ -12,8 +12,13 @@ gem 'inspec', git: 'https://gitlab.com/saltstack-formulas/infrastructure/inspec' # improvement: avoid package installations which are already covered by the # `salt-image-builder` (i.e. the pre-salted images that we're using) # rubocop:disable Layout/LineLength -gem 'kitchen-docker', git: 'https://gitlab.com/saltstack-formulas/infrastructure/kitchen-docker', branch: 'ssf' +gem 'kitchen-docker', git: 'https://github.com/test-kitchen/kitchen-docker', ref: '511e4ad36856b9e2eccceb56603586e6cebd296a' # rubocop:enable Layout/LineLength -gem 'kitchen-inspec', '>= 2.5.0' -gem 'kitchen-salt', '>= 0.7.2' +gem 'kitchen-inspec', '3.0.0' +gem 'kitchen-salt', '0.7.2' + +# Avoid the error 'pkeys are immutable on OpenSSL 3.0' +gem 'net-ssh', '>= 7.0.0' + +gem 'test-kitchen', '3.9.0' diff --git a/Gemfile.lock b/Gemfile.lock index 471bb68..8c606d3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,24 +1,34 @@ +GIT + remote: https://github.com/test-kitchen/kitchen-docker + revision: 511e4ad36856b9e2eccceb56603586e6cebd296a + ref: 511e4ad36856b9e2eccceb56603586e6cebd296a + specs: + kitchen-docker (3.0.0) + test-kitchen (>= 1.0.0, < 4.0) + GIT remote: https://gitlab.com/saltstack-formulas/infrastructure/inspec - revision: aaef842906a5666f0fc0b4f186b4dd3498f5b28c + revision: a0c6295303f7d7a4d2a6164b5e77868560b04945 branch: ssf specs: - inspec (5.18.15) + inspec (5.21.15) cookstyle faraday_middleware (>= 0.12.2, < 1.1) - inspec-core (= 5.18.15) + inspec-core (= 5.21.15) mongo (= 2.13.2) progress_bar (~> 1.3.3) rake + roo (~> 2.9.0) + roo-xls train (~> 3.10) train-aws (~> 0.2) train-habitat (~> 0.1) train-winrm (~> 0.2) - inspec-core (5.18.15) + inspec-core (5.21.15) addressable (~> 2.4) chef-telemetry (~> 1.0, >= 1.0.8) - faraday (>= 0.9.0, < 1.5) - faraday_middleware (~> 1.0) + faraday (>= 1, < 3) + faraday-follow_redirects (~> 0.3) hashie (>= 3.4, < 5.0) license-acceptance (>= 0.2.13, < 3.0) method_source (>= 0.8, < 2.0) @@ -38,215 +48,221 @@ GIT tty-prompt (~> 0.17) tty-table (~> 0.10) -GIT - remote: https://gitlab.com/saltstack-formulas/infrastructure/kitchen-docker - revision: 9a09bc1e571e25f3ccabf4725ca2048d970fff82 - branch: ssf - specs: - kitchen-docker (2.12.0) - test-kitchen (>= 1.0.0) - GEM remote: https://rubygems.org/ specs: - activesupport (7.0.3.1) + activesupport (7.1.5.1) + base64 + benchmark (>= 0.3) + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) + mutex_m + securerandom (>= 0.3) tzinfo (~> 2.0) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) - ast (2.4.2) - aws-eventstream (1.2.0) - aws-partitions (1.607.0) - aws-sdk-alexaforbusiness (1.56.0) - aws-sdk-core (~> 3, >= 3.127.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + ast (2.4.3) + aws-eventstream (1.4.0) + aws-partitions (1.1196.0) + aws-sdk-account (1.20.0) + aws-sdk-core (~> 3, >= 3.188.0) + aws-sigv4 (~> 1.1) + aws-sdk-alexaforbusiness (1.67.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) aws-sdk-amplify (1.32.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-apigateway (1.78.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-apigateway (1.90.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-apigatewayv2 (1.42.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-apigatewayv2 (1.53.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) aws-sdk-applicationautoscaling (1.51.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-athena (1.55.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-athena (1.79.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-autoscaling (1.63.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-autoscaling (1.92.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-batch (1.47.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-batch (1.73.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-budgets (1.50.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-budgets (1.62.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudformation (1.70.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudformation (1.97.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudfront (1.65.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudfront (1.86.1) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsm (1.39.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudhsm (1.50.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudhsmv2 (1.42.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudhsmv2 (1.53.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudtrail (1.49.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudtrail (1.74.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatch (1.64.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudwatch (1.83.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchevents (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cloudwatchevents (1.62.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchlogs (1.53.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-cloudwatchlogs (1.77.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-codecommit (1.51.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-codecommit (1.62.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-codedeploy (1.49.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-codedeploy (1.62.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-codepipeline (1.53.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-codepipeline (1.67.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentity (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cognitoidentity (1.45.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentityprovider (1.53.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-cognitoidentityprovider (1.76.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-configservice (1.79.0) - aws-sdk-core (~> 3, >= 3.127.0) - aws-sigv4 (~> 1.1) - aws-sdk-core (3.131.2) - aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) + aws-sdk-configservice (1.103.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) + aws-sdk-core (3.240.0) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.992.0) + aws-sigv4 (~> 1.9) + base64 + bigdecimal jmespath (~> 1, >= 1.6.1) - aws-sdk-costandusagereportservice (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + logger + aws-sdk-costandusagereportservice (1.53.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-databasemigrationservice (1.53.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-databasemigrationservice (1.80.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-dynamodb (1.75.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-dynamodb (1.98.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-ec2 (1.322.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ec2 (1.429.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-ecr (1.56.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ecr (1.68.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-ecrpublic (1.12.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ecrpublic (1.25.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-ecs (1.100.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ecs (1.135.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-efs (1.54.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-efs (1.71.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-eks (1.75.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-eks (1.95.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticache (1.78.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticache (1.95.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticbeanstalk (1.51.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticbeanstalk (1.63.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancing (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticloadbalancing (1.51.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancingv2 (1.78.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticloadbalancingv2 (1.96.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-elasticsearchservice (1.65.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-elasticsearchservice (1.79.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) aws-sdk-emr (1.53.0) aws-sdk-core (~> 3, >= 3.121.2) aws-sigv4 (~> 1.1) - aws-sdk-eventbridge (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-eventbridge (1.46.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-firehose (1.48.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-firehose (1.60.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-glue (1.88.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-glue (1.145.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-guardduty (1.58.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-guardduty (1.85.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-iam (1.69.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-iam (1.92.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-kafka (1.50.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kafka (1.67.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-kinesis (1.41.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kinesis (1.54.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-kms (1.57.0) - aws-sdk-core (~> 3, >= 3.127.0) - aws-sigv4 (~> 1.1) - aws-sdk-lambda (1.84.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.118.0) + aws-sdk-core (~> 3, >= 3.239.1) + aws-sigv4 (~> 1.5) + aws-sdk-lambda (1.113.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) aws-sdk-mq (1.40.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-networkfirewall (1.17.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-networkfirewall (1.39.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-networkmanager (1.24.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-networkmanager (1.40.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-organizations (1.59.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-organizations (1.77.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) aws-sdk-ram (1.26.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-rds (1.148.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-rds (1.208.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-redshift (1.84.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-redshift (1.107.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-route53 (1.63.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-route53 (1.83.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-route53domains (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-route53domains (1.54.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-route53resolver (1.37.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-route53resolver (1.51.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.208.0) + aws-sdk-core (~> 3, >= 3.234.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) + aws-sigv4 (~> 1.5) aws-sdk-s3control (1.43.0) aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) aws-sdk-secretsmanager (1.46.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-securityhub (1.67.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-securityhub (1.98.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) aws-sdk-servicecatalog (1.60.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -254,8 +270,8 @@ GEM aws-sdk-ses (1.41.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-shield (1.48.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-shield (1.60.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) aws-sdk-signer (1.32.0) aws-sdk-core (~> 3, >= 3.120.0) @@ -263,17 +279,17 @@ GEM aws-sdk-simpledb (1.29.0) aws-sdk-core (~> 3, >= 3.120.0) aws-sigv2 (~> 1.0) - aws-sdk-sms (1.40.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-sms (1.52.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-sns (1.53.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-sns (1.70.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-sqs (1.51.1) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-sqs (1.69.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-ssm (1.137.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-ssm (1.162.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) aws-sdk-states (1.39.0) aws-sdk-core (~> 3, >= 3.112.0) @@ -281,14 +297,14 @@ GEM aws-sdk-synthetics (1.19.0) aws-sdk-core (~> 3, >= 3.121.2) aws-sigv4 (~> 1.1) - aws-sdk-transfer (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-transfer (1.73.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) aws-sdk-waf (1.43.0) aws-sdk-core (~> 3, >= 3.122.0) aws-sigv4 (~> 1.1) - aws-sigv2 (1.1.0) - aws-sigv4 (1.5.0) + aws-sigv2 (1.2.0) + aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) azure_graph_rbac (0.17.2) ms_rest_azure (~> 0.12.0) @@ -300,42 +316,80 @@ GEM ms_rest_azure (~> 0.12.0) azure_mgmt_storage (0.23.0) ms_rest_azure (~> 0.12.0) - bcrypt_pbkdf (1.1.0) + base64 (0.3.0) + bcrypt_pbkdf (1.1.1) + bcrypt_pbkdf (1.1.1-x64-mingw-ucrt) + benchmark (0.4.0) + bigdecimal (3.3.1) bson (4.15.0) - builder (3.2.4) - chef-config (17.10.0) + builder (3.3.0) + cgi (0.5.0) + chef-config (18.7.6) addressable - chef-utils (= 17.10.0) + chef-utils (= 18.7.6) fuzzyurl mixlib-config (>= 2.2.12, < 4.0) mixlib-shellout (>= 2.0, < 4.0) tomlrb (~> 1.2) + chef-gyoku (1.4.5) + builder (>= 2.1.2) + rexml (~> 3.4) chef-telemetry (1.1.1) chef-config concurrent-ruby (~> 1.0) - chef-utils (17.10.0) + chef-utils (18.7.6) concurrent-ruby + chef-winrm (2.3.12) + builder (>= 2.1.2) + chef-gyoku (~> 1.4.0, <= 1.4.5) + erubi (~> 1.8) + ffi (>= 1.15.5, < 1.17.0) + gssapi (~> 1.2) + httpclient (~> 2.2, >= 2.2.0.2) + logging (>= 1.6.1, < 3.0) + nori (= 2.7.0) + rexml (~> 3.3) + rubyntlm (~> 0.6.0, >= 0.6.3) + chef-winrm-elevated (1.2.5) + chef-winrm (>= 2.3.11) + chef-winrm-fs (>= 1.3.7) + erubi (~> 1.8) + chef-winrm-fs (1.3.7) + chef-winrm (>= 2.3.11) + erubi (>= 1.7) + logging (>= 1.6.1, < 3.0) + rubyzip (~> 2.0) coderay (1.1.3) - concurrent-ruby (1.1.10) - cookstyle (7.32.1) - rubocop (= 1.25.1) + concurrent-ruby (1.3.5) + connection_pool (2.5.3) + cookstyle (8.1.2) + rubocop (= 1.75.5) + csv (3.3.5) + date (3.5.0) declarative (0.0.20) - diff-lcs (1.5.0) - docker-api (2.2.0) - excon (>= 0.47.0) + diff-lcs (1.6.2) + docker-api (2.4.0) + excon (>= 0.64.0) multi_json - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) - ed25519 (1.3.0) - erubi (1.10.0) - excon (0.92.3) - faraday (1.4.3) + domain_name (0.6.20240107) + drb (2.2.1) + ed25519 (1.4.0) + erb (4.0.4) + cgi (>= 0.3.3) + erubi (1.13.1) + excon (1.2.5) + logger + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) - multipart-post (>= 1.2, < 3) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) @@ -343,73 +397,113 @@ GEM faraday-em_http (1.0.0) faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) - faraday-net_http (1.0.1) + faraday-follow_redirects (0.3.0) + faraday (>= 1, < 3) + faraday-httpclient (1.0.1) + faraday-multipart (1.1.0) + multipart-post (~> 2.0) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) faraday_middleware (1.0.0) faraday (~> 1.0) - ffi (1.15.5) + ffi (1.16.3) + ffi (1.16.3-x64-mingw-ucrt) + ffi-win32-extensions (1.0.4) + ffi fuzzyurl (0.9.0) - google-api-client (0.52.0) + google-apis-admin_directory_v1 (0.46.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-cloudkms_v1 (0.41.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-cloudresourcemanager_v1 (0.35.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-compute_v1 (0.83.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) - googleauth (~> 0.9) - httpclient (>= 2.8.1, < 3.0) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) mini_mime (~> 1.0) representable (~> 3.0) - retriable (>= 2.0, < 4.0) + retriable (>= 2.0, < 4.a) rexml - signet (~> 0.12) - googleauth (0.14.0) - faraday (>= 0.17.3, < 2.0) + google-apis-iam_v1 (0.50.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-monitoring_v3 (0.51.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-storage_v1 (0.30.0) + google-apis-core (>= 0.11.0, < 2.a) + googleauth (1.8.1) + faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) - signet (~> 0.14) + signet (>= 0.16, < 2.a) gssapi (1.3.1) ffi (>= 1.0.1) gyoku (1.4.0) builder (>= 2.1.2) rexml (~> 3.0) hashie (4.1.0) - highline (2.0.3) - http-cookie (1.0.5) + highline (3.1.2) + reline + http-cookie (1.0.8) domain_name (~> 0.5) - httpclient (2.8.3) - i18n (1.12.0) + httpclient (2.9.0) + mutex_m + i18n (1.14.7) concurrent-ruby (~> 1.0) inifile (3.0.0) - jmespath (1.6.1) - json (2.6.2) - jwt (2.4.1) - kitchen-inspec (2.6.1) + io-console (0.8.0) + irb (1.15.3) + pp (>= 0.6.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + jmespath (1.6.2) + json (2.12.0) + jwt (2.10.1) + base64 + kitchen-inspec (3.0.0) hashie (>= 3.4, <= 5.0) inspec (>= 2.2.64, < 7.0) test-kitchen (>= 2.7, < 4) kitchen-salt (0.7.2) hashie (>= 3.5) test-kitchen (>= 1.4) + language_server-protocol (3.17.0.5) license-acceptance (2.1.13) pastel (~> 0.7) tomlrb (>= 1.2, < 3.0) tty-box (~> 0.6) tty-prompt (~> 0.20) + lint_roller (1.1.0) little-plugger (1.1.4) - logging (2.3.1) + logger (1.7.0) + logging (2.4.0) little-plugger (~> 1.1) multi_json (~> 1.14) - memoist (0.16.2) - method_source (1.0.0) - mini_mime (1.1.2) - minitest (5.16.2) + method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.9) + minitest (5.25.5) mixlib-config (3.0.27) tomlrb - mixlib-install (3.12.19) + mixlib-install (3.12.30) mixlib-shellout mixlib-versioning thor - mixlib-log (3.0.9) - mixlib-shellout (3.2.7) + mixlib-log (3.2.3) + ffi (>= 1.15.5) + mixlib-shellout (3.3.9) chef-utils + mixlib-shellout (3.3.9-x64-mingw-ucrt) + chef-utils + ffi-win32-extensions (~> 1.0.3) + win32-process (~> 0.9) + wmi-lite (~> 1.0) mixlib-versioning (1.2.12) mongo (2.13.2) bson (>= 4.8.2, < 5.0.0) @@ -422,121 +516,175 @@ GEM faraday (>= 0.9, < 2.0.0) faraday-cookie_jar (~> 0.0.6) ms_rest (~> 0.7.6) - multi_json (1.15.0) - multipart-post (2.2.3) - net-scp (3.0.0) - net-ssh (>= 2.6.5, < 7.0.0) - net-ssh (6.1.0) + multi_json (1.17.0) + multipart-post (2.4.1) + mutex_m (0.3.0) + net-scp (4.1.0) + net-ssh (>= 2.6.5, < 8.0.0) + net-ssh (7.3.0) net-ssh-gateway (2.0.0) net-ssh (>= 4.0.0) - nori (2.6.0) + nokogiri (1.18.9) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + nokogiri (1.18.9-x64-mingw-ucrt) + racc (~> 1.4) + nori (2.7.0) + bigdecimal options (2.3.2) os (1.1.4) - parallel (1.22.1) - parser (3.1.2.0) + ostruct (0.6.3) + parallel (1.27.0) + parser (3.3.8.0) ast (~> 2.4.1) + racc parslet (1.8.2) pastel (0.8.0) tty-color (~> 0.5) - progress_bar (1.3.3) - highline (>= 1.6, < 3) + pp (0.6.3) + prettyprint + prettyprint (0.2.0) + prism (1.4.0) + progress_bar (1.3.4) + highline (>= 1.6) options (~> 2.3.0) - pry (0.14.1) + pry (0.15.2) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (4.0.7) + psych (5.2.6) + date + stringio + public_suffix (6.0.2) + racc (1.8.1) rainbow (3.1.1) - rake (13.0.6) - regexp_parser (2.5.0) + rake (13.2.1) + rdoc (6.16.1) + erb + psych (>= 4.0.0) + tsort + regexp_parser (2.10.0) + reline (0.6.1) + io-console (~> 0.5) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.4.4) + roo (2.9.0) + nokogiri (~> 1) + rubyzip (>= 1.3.0, < 3.0.0) + roo-xls (1.2.0) + nokogiri + roo (>= 2.0.0, < 3) + spreadsheet (> 0.9.0) rspec (3.11.0) rspec-core (~> 3.11.0) rspec-expectations (~> 3.11.0) rspec-mocks (~> 3.11.0) rspec-core (3.11.0) rspec-support (~> 3.11.0) - rspec-expectations (3.11.0) + rspec-expectations (3.11.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-its (1.3.0) + rspec-its (1.3.1) rspec-core (>= 3.0.0) rspec-expectations (>= 3.0.0) - rspec-mocks (3.11.1) + rspec-mocks (3.11.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-support (3.11.0) - rubocop (1.25.1) + rspec-support (3.11.1) + rubocop (1.75.5) + json (~> 2.3) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.1.0) parallel (~> 1.10) - parser (>= 3.1.0.0) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) - rexml - rubocop-ast (>= 1.15.1, < 2.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.44.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.19.1) - parser (>= 3.1.1.0) - ruby-progressbar (1.11.0) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.44.1) + parser (>= 3.3.7.2) + prism (~> 1.4) + ruby-ole (1.2.13.1) + ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) - rubyntlm (0.6.3) - rubyzip (2.3.2) + rubyntlm (0.6.5) + base64 + rubyzip (2.4.1) + securerandom (0.4.1) semverse (3.0.2) - signet (0.17.0) + signet (0.20.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) + spreadsheet (1.3.4) + bigdecimal + logger + ruby-ole sslshake (1.3.1) + stringio (3.1.8) strings (0.2.1) strings-ansi (~> 0.2) unicode-display_width (>= 1.5, < 3.0) unicode_utils (~> 1.4) strings-ansi (0.2.0) - test-kitchen (3.3.1) + syslog (0.3.0) + logger + test-kitchen (3.9.0) bcrypt_pbkdf (~> 1.0) chef-utils (>= 16.4.35) - ed25519 (~> 1.2) + csv (~> 3.3) + ed25519 (~> 1.3) + irb (~> 1.15) license-acceptance (>= 1.0.11, < 3.0) mixlib-install (~> 3.6) mixlib-shellout (>= 1.2, < 4.0) - net-scp (>= 1.1, < 4.0) - net-ssh (>= 2.9, < 7.0) + net-scp (>= 1.1, < 5.0) + net-ssh (>= 2.9, < 8.0) net-ssh-gateway (>= 1.2, < 3.0) + ostruct (~> 0.6) + syslog (~> 0.3) thor (>= 0.19, < 2.0) winrm (~> 2.0) winrm-elevated (~> 1.0) winrm-fs (~> 1.1) - thor (1.2.1) + thor (1.4.0) timeliness (0.3.10) tomlrb (1.3.0) trailblazer-option (0.1.2) - train (3.10.1) - activesupport (>= 6.0.3.1) + train (3.12.13) + activesupport (>= 6.0.3.1, < 7.2.0) azure_graph_rbac (~> 0.16) azure_mgmt_key_vault (~> 0.17) azure_mgmt_resources (~> 0.15) azure_mgmt_security (~> 0.18) azure_mgmt_storage (~> 0.18) docker-api (>= 1.26, < 3.0) - google-api-client (>= 0.23.9, <= 0.52.0) - googleauth (>= 0.6.6, <= 0.14.0) + google-apis-admin_directory_v1 (~> 0.46.0) + google-apis-cloudkms_v1 (~> 0.41.0) + google-apis-cloudresourcemanager_v1 (~> 0.35.0) + google-apis-compute_v1 (~> 0.83.0) + google-apis-iam_v1 (~> 0.50.0) + google-apis-monitoring_v3 (~> 0.51.0) + google-apis-storage_v1 (~> 0.30.0) + googleauth (>= 0.16.2, < 1.9.0) inifile (~> 3.0) - train-core (= 3.10.1) - train-winrm (~> 0.2) - train-aws (0.2.24) + train-core (= 3.12.13) + train-winrm (~> 0.2.19) + train-aws (0.2.36) + aws-sdk-account (~> 1.14) aws-sdk-alexaforbusiness (~> 1.0) aws-sdk-amplify (~> 1.32.0) aws-sdk-apigateway (~> 1.0) aws-sdk-apigatewayv2 (~> 1.0) aws-sdk-applicationautoscaling (>= 1.46, < 1.52) aws-sdk-athena (~> 1.0) - aws-sdk-autoscaling (>= 1.22, < 1.64) - aws-sdk-batch (>= 1.36, < 1.48) + aws-sdk-autoscaling (>= 1.22, < 1.93) + aws-sdk-batch (>= 1.36, < 1.74) aws-sdk-budgets (~> 1.0) aws-sdk-cloudformation (~> 1.0) aws-sdk-cloudfront (~> 1.0) @@ -544,17 +692,17 @@ GEM aws-sdk-cloudhsmv2 (~> 1.0) aws-sdk-cloudtrail (~> 1.8) aws-sdk-cloudwatch (~> 1.13) - aws-sdk-cloudwatchevents (>= 1.36, < 1.47) + aws-sdk-cloudwatchevents (>= 1.36, < 1.63) aws-sdk-cloudwatchlogs (~> 1.13) aws-sdk-codecommit (~> 1.0) aws-sdk-codedeploy (~> 1.0) aws-sdk-codepipeline (~> 1.0) - aws-sdk-cognitoidentity (>= 1.26, < 1.32) - aws-sdk-cognitoidentityprovider (>= 1.46, < 1.54) + aws-sdk-cognitoidentity (>= 1.26, < 1.46) + aws-sdk-cognitoidentityprovider (>= 1.46, < 1.77) aws-sdk-configservice (~> 1.21) aws-sdk-core (~> 3.0) aws-sdk-costandusagereportservice (~> 1.6) - aws-sdk-databasemigrationservice (>= 1.42, < 1.54) + aws-sdk-databasemigrationservice (>= 1.42, < 1.81) aws-sdk-dynamodb (~> 1.31) aws-sdk-ec2 (~> 1.70) aws-sdk-ecr (~> 1.18) @@ -568,9 +716,9 @@ GEM aws-sdk-elasticloadbalancingv2 (~> 1.0) aws-sdk-elasticsearchservice (~> 1.0) aws-sdk-emr (~> 1.53.0) - aws-sdk-eventbridge (~> 1.24.0) + aws-sdk-eventbridge (>= 1.24, < 1.47) aws-sdk-firehose (~> 1.0) - aws-sdk-glue (>= 1.71, < 1.89) + aws-sdk-glue (>= 1.71, < 1.146) aws-sdk-guardduty (~> 1.31) aws-sdk-iam (~> 1.13) aws-sdk-kafka (~> 1.0) @@ -580,7 +728,7 @@ GEM aws-sdk-mq (~> 1.40.0) aws-sdk-networkfirewall (>= 1.6.0) aws-sdk-networkmanager (>= 1.13.0) - aws-sdk-organizations (>= 1.17, < 1.60) + aws-sdk-organizations (>= 1.17, < 1.78) aws-sdk-ram (>= 1.21, < 1.27) aws-sdk-rds (~> 1.43) aws-sdk-redshift (~> 1.0) @@ -602,20 +750,21 @@ GEM aws-sdk-ssm (~> 1.0) aws-sdk-states (>= 1.35, < 1.40) aws-sdk-synthetics (~> 1.19.0) - aws-sdk-transfer (>= 1.26, < 1.35) + aws-sdk-transfer (>= 1.26, < 1.74) aws-sdk-waf (~> 1.43.0) - train-core (3.10.1) + train-core (3.12.13) addressable (~> 2.5) ffi (!= 1.13.0) json (>= 1.8, < 3.0) mixlib-shellout (>= 2.0, < 4.0) - net-scp (>= 1.2, < 4.0) - net-ssh (>= 2.9, < 7.0) + net-scp (>= 1.2, < 5.0) + net-ssh (>= 2.9, < 8.0) train-habitat (0.2.22) - train-winrm (0.2.13) - winrm (>= 2.3.6, < 3.0) - winrm-elevated (~> 1.2.2) - winrm-fs (~> 1.0) + train-winrm (0.2.19) + chef-winrm (~> 2.3.12) + chef-winrm-elevated (~> 1.2.5) + chef-winrm-fs (~> 1.3.7) + tsort (0.2.0) tty-box (0.7.0) pastel (~> 0.8) strings (~> 0.2.0) @@ -629,20 +778,19 @@ GEM tty-cursor (~> 0.7) tty-screen (~> 0.8) wisper (~> 2.0) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-table (0.12.0) pastel (~> 0.8) strings (~> 0.2.0) tty-screen (~> 0.8) - tzinfo (2.0.4) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2) - unicode-display_width (2.2.0) + unicode-display_width (2.6.0) unicode_utils (1.4.0) - winrm (2.3.6) + win32-process (0.10.0) + ffi (>= 1.0.0) + winrm (2.3.8) builder (>= 2.1.2) erubi (~> 1.8) gssapi (~> 1.2) @@ -650,6 +798,7 @@ GEM httpclient (~> 2.2, >= 2.2.0.2) logging (>= 1.6.1, < 3.0) nori (~> 2.0) + rexml (~> 3.0) rubyntlm (~> 0.6.0, >= 0.6.3) winrm-elevated (1.2.3) erubi (~> 1.8) @@ -661,15 +810,19 @@ GEM rubyzip (~> 2.0) winrm (~> 2.0) wisper (2.0.1) + wmi-lite (1.0.7) PLATFORMS ruby + x64-mingw-ucrt DEPENDENCIES inspec! kitchen-docker! - kitchen-inspec (>= 2.5.0) - kitchen-salt (>= 0.7.2) + kitchen-inspec (= 3.0.0) + kitchen-salt (= 0.7.2) + net-ssh (>= 7.0.0) + test-kitchen (= 3.9.0) BUNDLED WITH - 2.1.2 + 2.3.7 diff --git a/commitlint.config.js b/commitlint.config.js index 4eb37f4..fc3c51f 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1,8 +1,14 @@ module.exports = { - extends: ['@commitlint/config-conventional'], - rules: { - 'body-max-line-length': [2, 'always', 120], - 'footer-max-line-length': [2, 'always', 120], - 'header-max-length': [2, 'always', 72], - }, -}; + extends: ['@commitlint/config-conventional'], + rules: { + 'body-max-line-length': [2, 'always', 120], + 'footer-max-line-length': [2, 'always', 120], + 'header-max-length': [2, 'always', 72] + }, + ignores: [ + (commit) => commit.startsWith('chore(copier):'), + (commit) => commit.startsWith('chore(deps):'), + (commit) => commit.startsWith('ci(pre-commit.ci):'), + (commit) => commit.startsWith('[CI merge]') + ] +} diff --git a/kitchen.yml b/kitchen.yml index 06a4b45..f6baa20 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -17,246 +17,222 @@ provisioner: salt_copy_filter: - .kitchen - .git + pillars_from_directories: + - test/salt/pillar + +transport: + # Avoid lengthy waits when a container does not launch correctly + max_wait_until_ready: 60 platforms: - ## SALT `tiamat` - - name: debian-11-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:debian-11 - run_command: /lib/systemd/systemd - - name: debian-10-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:debian-10 - run_command: /lib/systemd/systemd - - name: debian-9-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:debian-9 - run_command: /lib/systemd/systemd - - name: ubuntu-2204-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:ubuntu-22.04 - run_command: /lib/systemd/systemd - - name: ubuntu-2004-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:ubuntu-20.04 - run_command: /lib/systemd/systemd - - name: ubuntu-1804-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:ubuntu-18.04 - run_command: /lib/systemd/systemd - - name: centos-stream8-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:centos-stream8 - - name: centos-7-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:centos-7 - - name: amazonlinux-2-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:amazonlinux-2 - - name: oraclelinux-8-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:oraclelinux-8 - - name: oraclelinux-7-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:oraclelinux-7 - - name: almalinux-8-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:almalinux-8 - - name: rockylinux-8-tiamat-py3 - driver: - image: saltimages/salt-tiamat-py3:rockylinux-8 - ## SALT `master` - - name: debian-11-master-py3 + - name: debian-12-master + driver: + image: saltimages/salt-master-py3:debian-12 + run_command: /lib/systemd/systemd + - name: debian-11-master driver: image: saltimages/salt-master-py3:debian-11 run_command: /lib/systemd/systemd - - name: debian-10-master-py3 + - name: ubuntu-2404-master driver: - image: saltimages/salt-master-py3:debian-10 + image: saltimages/salt-master-py3:ubuntu-24.04 run_command: /lib/systemd/systemd - - name: debian-9-master-py3 - driver: - image: saltimages/salt-master-py3:debian-9 - run_command: /lib/systemd/systemd - - name: ubuntu-2204-master-py3 + - name: ubuntu-2204-master driver: image: saltimages/salt-master-py3:ubuntu-22.04 run_command: /lib/systemd/systemd - - name: ubuntu-2004-master-py3 + - name: ubuntu-2004-master driver: image: saltimages/salt-master-py3:ubuntu-20.04 run_command: /lib/systemd/systemd - - name: ubuntu-1804-master-py3 + - name: centos-stream9-master driver: - image: saltimages/salt-master-py3:ubuntu-18.04 - run_command: /lib/systemd/systemd - - name: centos-stream8-master-py3 + image: saltimages/salt-master-py3:centos-stream9 + - name: opensuse-leap-156-master driver: - image: saltimages/salt-master-py3:centos-stream8 - - name: centos-7-master-py3 - driver: - image: saltimages/salt-master-py3:centos-7 - - name: fedora-36-master-py3 - driver: - image: saltimages/salt-master-py3:fedora-36 - - name: fedora-35-master-py3 - driver: - image: saltimages/salt-master-py3:fedora-35 - - name: opensuse-leap-153-master-py3 - driver: - image: saltimages/salt-master-py3:opensuse-leap-15.3 - # Workaround to avoid intermittent failures on `opensuse-leap-15.3`: + image: saltimages/salt-master-py3:opensuse-leap-15.6 + # Workaround to avoid intermittent failures on `opensuse-leap-15.6`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 - - name: opensuse-tmbl-latest-master-py3 + - name: opensuse-tmbl-latest-master driver: image: saltimages/salt-master-py3:opensuse-tumbleweed-latest # Workaround to avoid intermittent failures on `opensuse-tumbleweed`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 - - name: amazonlinux-2-master-py3 + - name: fedora-41-master driver: - image: saltimages/salt-master-py3:amazonlinux-2 - - name: oraclelinux-8-master-py3 + image: saltimages/salt-master-py3:fedora-41 + - name: fedora-40-master + driver: + image: saltimages/salt-master-py3:fedora-40 + - name: amazonlinux-2023-master + driver: + image: saltimages/salt-master-py3:amazonlinux-2023 + - name: oraclelinux-9-master + driver: + image: saltimages/salt-master-py3:oraclelinux-9 + - name: oraclelinux-8-master driver: image: saltimages/salt-master-py3:oraclelinux-8 - - name: oraclelinux-7-master-py3 + - name: almalinux-9-master driver: - image: saltimages/salt-master-py3:oraclelinux-7 - - name: arch-base-latest-master-py3 - driver: - image: saltimages/salt-master-py3:arch-base-latest - - name: gentoo-stage3-latest-master-py3 - driver: - image: saltimages/salt-master-py3:gentoo-stage3-latest - run_command: /sbin/init - - name: gentoo-stage3-systemd-master-py3 - driver: - image: saltimages/salt-master-py3:gentoo-stage3-systemd - - name: almalinux-8-master-py3 + image: saltimages/salt-master-py3:almalinux-9 + - name: almalinux-8-master driver: image: saltimages/salt-master-py3:almalinux-8 - - name: rockylinux-8-master-py3 + - name: rockylinux-9-master + driver: + image: saltimages/salt-master-py3:rockylinux-9 + - name: rockylinux-8-master driver: image: saltimages/salt-master-py3:rockylinux-8 - ## SALT `3004.1` - - name: debian-11-3004-1-py3 + ## SALT `3007.9` + - name: debian-12-3007-9 driver: - image: saltimages/salt-3004.1-py3:debian-11 + image: saltimages/salt-3007.9-py3:debian-12 run_command: /lib/systemd/systemd - - name: debian-10-3004-1-py3 + - name: debian-11-3007-9 driver: - image: saltimages/salt-3004.1-py3:debian-10 + image: saltimages/salt-3007.9-py3:debian-11 run_command: /lib/systemd/systemd - - name: debian-9-3004-1-py3 + - name: ubuntu-2404-3007-9 driver: - image: saltimages/salt-3004.1-py3:debian-9 + image: saltimages/salt-3007.9-py3:ubuntu-24.04 run_command: /lib/systemd/systemd - - name: ubuntu-2204-3004-1-py3 + - name: ubuntu-2204-3007-9 driver: - image: saltimages/salt-3004.1-py3:ubuntu-22.04 + image: saltimages/salt-3007.9-py3:ubuntu-22.04 run_command: /lib/systemd/systemd - - name: ubuntu-2004-3004-1-py3 + - name: ubuntu-2004-3007-9 driver: - image: saltimages/salt-3004.1-py3:ubuntu-20.04 + image: saltimages/salt-3007.9-py3:ubuntu-20.04 run_command: /lib/systemd/systemd - - name: ubuntu-1804-3004-1-py3 + - name: centos-stream9-3007-9 driver: - image: saltimages/salt-3004.1-py3:ubuntu-18.04 - run_command: /lib/systemd/systemd - - name: centos-stream8-3004-1-py3 + image: saltimages/salt-3007.9-py3:centos-stream9 + - name: opensuse-leap-156-3007-9 driver: - image: saltimages/salt-3004.1-py3:centos-stream8 - - name: centos-7-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:centos-7 - - name: fedora-36-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:fedora-36 - - name: fedora-35-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:fedora-35 - - name: amazonlinux-2-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:amazonlinux-2 - - name: oraclelinux-8-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:oraclelinux-8 - - name: oraclelinux-7-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:oraclelinux-7 - - name: arch-base-latest-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:arch-base-latest - - name: gentoo-stage3-latest-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:gentoo-stage3-latest - run_command: /sbin/init - - name: gentoo-stage3-systemd-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:gentoo-stage3-systemd - - name: almalinux-8-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:almalinux-8 - - name: rockylinux-8-3004-1-py3 - driver: - image: saltimages/salt-3004.1-py3:rockylinux-8 - - ## SALT `3004.0` - - name: opensuse-leap-153-3004-0-py3 - driver: - image: saltimages/salt-3004.0-py3:opensuse-leap-15.3 - # Workaround to avoid intermittent failures on `opensuse-leap-15.3`: + image: saltimages/salt-3007.9-py3:opensuse-leap-15.6 + # Workaround to avoid intermittent failures on `opensuse-leap-15.6`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 - - name: opensuse-tmbl-latest-3004-0-py3 + - name: opensuse-tmbl-latest-3007-9 driver: - image: saltimages/salt-3004.0-py3:opensuse-tumbleweed-latest + image: saltimages/salt-3007.9-py3:opensuse-tumbleweed-latest # Workaround to avoid intermittent failures on `opensuse-tumbleweed`: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 + - name: fedora-41-3007-9 + driver: + image: saltimages/salt-3007.9-py3:fedora-41 + - name: fedora-40-3007-9 + driver: + image: saltimages/salt-3007.9-py3:fedora-40 + - name: amazonlinux-2023-3007-9 + driver: + image: saltimages/salt-3007.9-py3:amazonlinux-2023 + - name: amazonlinux-2-3007-9 + driver: + image: saltimages/salt-3007.9-py3:amazonlinux-2 + - name: oraclelinux-9-3007-9 + driver: + image: saltimages/salt-3007.9-py3:oraclelinux-9 + - name: oraclelinux-8-3007-9 + driver: + image: saltimages/salt-3007.9-py3:oraclelinux-8 + - name: almalinux-9-3007-9 + driver: + image: saltimages/salt-3007.9-py3:almalinux-9 + - name: almalinux-8-3007-9 + driver: + image: saltimages/salt-3007.9-py3:almalinux-8 + - name: rockylinux-9-3007-9 + driver: + image: saltimages/salt-3007.9-py3:rockylinux-9 + - name: rockylinux-8-3007-9 + driver: + image: saltimages/salt-3007.9-py3:rockylinux-8 - ## SALT `3003.4` - - name: debian-10-3003-4-py3 + ## SALT `3006.17` + - name: debian-12-3006-17 driver: - image: saltimages/salt-3003.4-py3:debian-10 + image: saltimages/salt-3006.17-py3:debian-12 run_command: /lib/systemd/systemd - - name: debian-9-3003-4-py3 + - name: debian-11-3006-17 driver: - image: saltimages/salt-3003.4-py3:debian-9 + image: saltimages/salt-3006.17-py3:debian-11 run_command: /lib/systemd/systemd - - name: ubuntu-2004-3003-4-py3 + - name: ubuntu-2404-3006-17 driver: - image: saltimages/salt-3003.4-py3:ubuntu-20.04 + image: saltimages/salt-3006.17-py3:ubuntu-24.04 run_command: /lib/systemd/systemd - - name: ubuntu-1804-3003-4-py3 + - name: ubuntu-2204-3006-17 driver: - image: saltimages/salt-3003.4-py3:ubuntu-18.04 + image: saltimages/salt-3006.17-py3:ubuntu-22.04 run_command: /lib/systemd/systemd - - name: centos-stream8-3003-4-py3 + - name: ubuntu-2004-3006-17 driver: - image: saltimages/salt-3003.4-py3:centos-stream8 - - name: centos-7-3003-4-py3 + image: saltimages/salt-3006.17-py3:ubuntu-20.04 + run_command: /lib/systemd/systemd + - name: centos-stream9-3006-17 driver: - image: saltimages/salt-3003.4-py3:centos-7 - - name: amazonlinux-2-3003-4-py3 + image: saltimages/salt-3006.17-py3:centos-stream9 + - name: opensuse-tmbl-latest-3006-17 driver: - image: saltimages/salt-3003.4-py3:amazonlinux-2 - - name: oraclelinux-8-3003-4-py3 + image: saltimages/salt-3006.17-py3:opensuse-tumbleweed-latest + # Workaround to avoid intermittent failures on `opensuse-tumbleweed`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 + - name: opensuse-leap-156-3006-17 driver: - image: saltimages/salt-3003.4-py3:oraclelinux-8 - - name: oraclelinux-7-3003-4-py3 + image: saltimages/salt-3006.17-py3:opensuse-leap-15.6 + # Workaround to avoid intermittent failures on `opensuse-leap-15.6`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 + - name: fedora-41-3006-17 driver: - image: saltimages/salt-3003.4-py3:oraclelinux-7 - - name: almalinux-8-3003-4-py3 + image: saltimages/salt-3006.17-py3:fedora-41 + - name: fedora-40-3006-17 driver: - image: saltimages/salt-3003.4-py3:almalinux-8 + image: saltimages/salt-3006.17-py3:fedora-40 + - name: amazonlinux-2023-3006-17 + driver: + image: saltimages/salt-3006.17-py3:amazonlinux-2023 + - name: amazonlinux-2-3006-17 + driver: + image: saltimages/salt-3006.17-py3:amazonlinux-2 + - name: oraclelinux-9-3006-17 + driver: + image: saltimages/salt-3006.17-py3:oraclelinux-9 + - name: oraclelinux-8-3006-17 + driver: + image: saltimages/salt-3006.17-py3:oraclelinux-8 + - name: almalinux-9-3006-17 + driver: + image: saltimages/salt-3006.17-py3:almalinux-9 + - name: almalinux-8-3006-17 + driver: + image: saltimages/salt-3006.17-py3:almalinux-8 + - name: rockylinux-9-3006-17 + driver: + image: saltimages/salt-3006.17-py3:rockylinux-9 + - name: rockylinux-8-3006-17 + driver: + image: saltimages/salt-3006.17-py3:rockylinux-8 + +########################################################## +# This file is managed as part of a Copier template. # +# Please make your own changes below this comment. # +########################################################## verifier: # https://www.inspec.io/ diff --git a/pre-commit_semantic-release.sh b/pre-commit_semantic-release.sh index 80f46e2..4437b90 100755 --- a/pre-commit_semantic-release.sh +++ b/pre-commit_semantic-release.sh @@ -3,20 +3,25 @@ ############################################################################### # (A) Update `FORMULA` with `${nextRelease.version}` ############################################################################### + sed -i -e "s_^\(version:\).*_\1 ${1}_" FORMULA ############################################################################### -# (B) Use `m2r2` to convert automatically produced `.md` docs to `.rst` +# (B) Update `AUTHORS.md` ############################################################################### -# Install `m2r2` -pip3 install m2r2 +maintainer contributor \ + --ignore-contributors dependabot[bot],renovate[bot],semantic-release-bot + +############################################################################### +# (C) Use `m2r` to convert automatically produced `.md` docs to `.rst` +############################################################################### # Copy and then convert the `.md` docs cp ./*.md docs/ cd docs/ || exit -m2r2 --overwrite ./*.md +m2r --overwrite ./*.md # Change excess `H1` headings to `H2` in converted `CHANGELOG.rst` sed -i -e '/^=.*$/s/=/-/g' CHANGELOG.rst diff --git a/release.config.js b/release.config.js index db4a363..24d0081 100644 --- a/release.config.js +++ b/release.config.js @@ -1,107 +1,54 @@ -module.exports = { - branch: 'master', +// Commit types appear in the changelog in this order +const commitTypes = [ + { type: 'feat', section: 'Features' }, + { type: 'fix', section: 'Bug Fixes' }, + { type: 'perf', section: 'Performance Improvements' }, + { type: 'revert', section: 'Reversions' }, + { type: 'refactor', section: 'Code Refactoring' }, + { type: 'docs', section: 'Documentation' }, + { type: 'test', section: 'Testing' }, + { type: 'style', section: 'Style Changes' }, + { type: 'ci', section: 'Continuous Integration' }, + { type: 'build', section: 'Build System' }, + { type: 'chore', section: 'Maintenance' } +] + +// Default rules can be found in `github.com/semantic-release/commit-analyzer/lib/default-release-rules.js` +// that cover feat, fix, perf and breaking. +// Commit types defined above but without release rules do not trigger a release +// but will be incorporated into the next release. +// NOTE: Any changes to commit types or release rules must be reflected in `CONTRIBUTING.rst`. +const releaseRules = [ + { type: 'docs', release: 'patch' }, + { type: 'refactor', release: 'patch' }, + { type: 'revert', release: 'patch' }, + { type: 'style', release: 'patch' }, + { type: 'test', release: 'patch' } +] + +const config = { + // TODO: remove this when we no longer process releases on GitLab CI repositoryUrl: 'https://github.com/saltstack-formulas/sysctl-formula', plugins: [ - ['@semantic-release/commit-analyzer', { - preset: 'angular', - releaseRules: './release-rules.js', - }], - '@semantic-release/release-notes-generator', - ['@semantic-release/changelog', { - changelogFile: 'CHANGELOG.md', - changelogTitle: '# Changelog', - }], - ['@semantic-release/exec', { - prepareCmd: 'sh ./pre-commit_semantic-release.sh ${nextRelease.version}', - }], - ['@semantic-release/git', { - assets: ['*.md', 'docs/*.rst', 'FORMULA'], - }], - '@semantic-release/github', + ['@semantic-release/commit-analyzer', { releaseRules }], + '@semantic-release/release-notes-generator', + ['@semantic-release/changelog', { + changelogFile: 'CHANGELOG.md', + changelogTitle: '# Changelog' + }], + ['@semantic-release/exec', { + // eslint-disable-next-line no-template-curly-in-string + prepareCmd: 'sh ./pre-commit_semantic-release.sh ${nextRelease.version}' + }], + ['@semantic-release/git', { + assets: ['*.md', 'docs/*.rst', 'FORMULA'] + }], + '@semantic-release/github' ], - generateNotes: { - preset: 'angular', - writerOpts: { - // Required due to upstream bug preventing all types being displayed. - // Bug: https://github.com/conventional-changelog/conventional-changelog/issues/317 - // Fix: https://github.com/conventional-changelog/conventional-changelog/pull/410 - transform: (commit, context) => { - const issues = [] + preset: 'conventionalcommits', + presetConfig: { + types: commitTypes + } +} - commit.notes.forEach(note => { - note.title = `BREAKING CHANGES` - }) - - // NOTE: Any changes here must be reflected in `CONTRIBUTING.md`. - if (commit.type === `feat`) { - commit.type = `Features` - } else if (commit.type === `fix`) { - commit.type = `Bug Fixes` - } else if (commit.type === `perf`) { - commit.type = `Performance Improvements` - } else if (commit.type === `revert`) { - commit.type = `Reverts` - } else if (commit.type === `docs`) { - commit.type = `Documentation` - } else if (commit.type === `style`) { - commit.type = `Styles` - } else if (commit.type === `refactor`) { - commit.type = `Code Refactoring` - } else if (commit.type === `test`) { - commit.type = `Tests` - } else if (commit.type === `build`) { - commit.type = `Build System` - // } else if (commit.type === `chore`) { - // commit.type = `Maintenance` - } else if (commit.type === `ci`) { - commit.type = `Continuous Integration` - } else { - return - } - - if (commit.scope === `*`) { - commit.scope = `` - } - - if (typeof commit.hash === `string`) { - commit.shortHash = commit.hash.substring(0, 7) - } - - if (typeof commit.subject === `string`) { - let url = context.repository - ? `${context.host}/${context.owner}/${context.repository}` - : context.repoUrl - if (url) { - url = `${url}/issues/` - // Issue URLs. - commit.subject = commit.subject.replace(/#([0-9]+)/g, (_, issue) => { - issues.push(issue) - return `[#${issue}](${url}${issue})` - }) - } - if (context.host) { - // User URLs. - commit.subject = commit.subject.replace(/\B@([a-z0-9](?:-?[a-z0-9/]){0,38})/g, (_, username) => { - if (username.includes('/')) { - return `@${username}` - } - - return `[@${username}](${context.host}/${username})` - }) - } - } - - // remove references that already appear in the subject - commit.references = commit.references.filter(reference => { - if (issues.indexOf(reference.issue) === -1) { - return true - } - - return false - }) - - return commit - }, - }, - }, -}; +module.exports = config