mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-02-04 11:08:16 -03:30
[release-2.25] pre-commit: make hooks self contained + ci config (#11359)
* Use alternate self-sufficient shellcheck precommit This pre-commit does not require prerequisite on the host, making it easier to run in CI workflows. * Switch to upstream ansible-lint pre-commit hook This way, the hook is self contained and does not depend on a previous virtualenv installation. * pre-commit: fix hooks dependencies - ansible-syntax-check - tox-inventory-builder - jinja-syntax-check * Fix ci-matrix pre-commit hook - Remove dependency of pydblite which fails to setup on recent pythons - Discard shell script and put everything into pre-commit * pre-commit: apply autofixes hooks and fix the rest manually - markdownlint (manual fix) - end-of-file-fixer - requirements-txt-fixer - trailing-whitespace * Convert check_typo to pre-commit + use maintained version client9/misspell is unmaintained, and has been forked by the golangci team, see https://github.com/client9/misspell/issues/197#issuecomment-1596318684. They haven't yet added a pre-commit config, so use my fork with the pre-commit hook config until the pull request is merged. * collection-build-install convert to pre-commit * Run pre-commit hooks in dynamic pipeline Use gitlab dynamic child pipelines feature to have one source of truth for the pre-commit jobs, the pre-commit config file. Use one cache per pre-commit. This should reduce the "fetching cache" time steps in gitlab-ci, since each job will have a separate cache with only its hook installed. * Remove gitlab-ci job done in pre-commit * pre-commit: adjust mardownlint default, md fixes Use a style file as recommended by upstream. This makes for only one source of truth. Conserve previous upstream default for MD007 (upstream default changed here https://github.com/markdownlint/markdownlint/pull/373) * Update pre-commit hooks --------- Co-authored-by: Max Gautier <mg@max.gautier.name>
This commit is contained in:
committed by
GitHub
parent
8d80b99941
commit
9b122fb5a8
@@ -4,7 +4,6 @@ import sys
|
||||
import glob
|
||||
from pathlib import Path
|
||||
import yaml
|
||||
from pydblite import Base
|
||||
import re
|
||||
import jinja2
|
||||
import sys
|
||||
@@ -14,6 +13,7 @@ from pprint import pprint
|
||||
|
||||
parser = argparse.ArgumentParser(description='Generate a Markdown table representing the CI test coverage')
|
||||
parser.add_argument('--dir', default='tests/files/', help='folder with test yml files')
|
||||
parser.add_argument('--output', default='docs/developers/ci.md', help='output file')
|
||||
|
||||
|
||||
args = parser.parse_args()
|
||||
@@ -24,25 +24,26 @@ env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=sys.path[0]))
|
||||
# Data represents CI coverage data matrix
|
||||
class Data:
|
||||
def __init__(self):
|
||||
self.db = Base(':memory:')
|
||||
self.db.create('container_manager', 'network_plugin', 'operating_system')
|
||||
self.container_managers = set()
|
||||
self.network_plugins = set()
|
||||
self.os = set()
|
||||
self.combination = set()
|
||||
|
||||
|
||||
def set(self, container_manager, network_plugin, operating_system):
|
||||
self.db.insert(container_manager=container_manager, network_plugin=network_plugin, operating_system=operating_system)
|
||||
self.db.commit()
|
||||
def exists(self, container_manager, network_plugin, operating_system):
|
||||
return len((self.db("container_manager") == container_manager) & (self.db("network_plugin") == network_plugin) & (self.db("operating_system") == operating_system)) > 0
|
||||
def set(self, container_manager, network_plugin, os):
|
||||
self.container_managers.add(container_manager)
|
||||
self.network_plugins.add(network_plugin)
|
||||
self.os.add(os)
|
||||
self.combination.add(container_manager+network_plugin+os)
|
||||
|
||||
def exists(self, container_manager, network_plugin, os):
|
||||
return (container_manager+network_plugin+os) in self.combination
|
||||
|
||||
def jinja(self):
|
||||
template = env.get_template('table.md.j2')
|
||||
container_engines = list(self.db.get_unique_ids('container_manager'))
|
||||
network_plugins = list(self.db.get_unique_ids("network_plugin"))
|
||||
operating_systems = list(self.db.get_unique_ids("operating_system"))
|
||||
|
||||
container_engines.sort()
|
||||
network_plugins.sort()
|
||||
operating_systems.sort()
|
||||
container_engines = sorted(self.container_managers)
|
||||
network_plugins = sorted(self.network_plugins)
|
||||
operating_systems = sorted(self.os)
|
||||
|
||||
return template.render(
|
||||
container_engines=container_engines,
|
||||
@@ -91,6 +92,5 @@ for f in files:
|
||||
network_plugin = y.get('kube_network_plugin', 'calico')
|
||||
x = re.match(r"^[a-z-]+_([a-z0-9]+).*", f.name)
|
||||
operating_system = x.group(1)
|
||||
data.set(container_manager=container_manager, network_plugin=network_plugin, operating_system=operating_system)
|
||||
#print(data.markdown())
|
||||
print(data.jinja())
|
||||
data.set(container_manager=container_manager, network_plugin=network_plugin, os=operating_system)
|
||||
print(data.jinja(), file=open(args.output, 'w'))
|
||||
|
||||
Reference in New Issue
Block a user