Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

pre-commit: make hooks self contained + ci config #11226

Merged
merged 11 commits into from
May 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ ci-authorized:
include:
- .gitlab-ci/build.yml
- .gitlab-ci/lint.yml
- .gitlab-ci/shellcheck.yml
- .gitlab-ci/terraform.yml
- .gitlab-ci/packet.yml
- .gitlab-ci/vagrant.yml
Expand Down
128 changes: 21 additions & 107 deletions .gitlab-ci/lint.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
---
yamllint:
extends: .job
stage: unit-tests
tags: [light]
variables:
LANG: C.UTF-8
script:
- yamllint --strict .
except: ['triggers', 'master']
generate-pre-commit:
image: 'mikefarah/yq@sha256:bcb889a1f9bdb0613c8a054542d02360c2b1b35521041be3e1bd8fbd0534d411'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HI @VannTen

To make the image more readable, is it ok to change the mikefarah/yq@sha256:bcb889a1f9bdb0613c8a054542d02360c2b1b35521041be3e1bd8fbd0534d411
to mikefarah/yq:4.44.1-githubaction

stage: build
before_script: []
script:
- >
yq -r < .pre-commit-config.yaml '.repos[].hooks[].id' |
sed 's/^/ - /' |
cat .gitlab-ci/pre-commit-dynamic-stub.yml - > pre-commit-generated.yml
artifacts:
paths:
- pre-commit-generated.yml

run-pre-commit:
stage: unit-tests
trigger:
include:
- artifact: pre-commit-generated.yml
job: generate-pre-commit
strategy: depend
Comment on lines +2 to +21
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, that's nice factoring and a way to keep the jobs running in parallel!


vagrant-validate:
extends: .job
Expand All @@ -19,108 +30,11 @@ vagrant-validate:
- ./tests/scripts/vagrant-validate.sh
except: ['triggers', 'master']

ansible-lint:
extends: .job
stage: unit-tests
tags: [light]
script:
- ansible-lint -v
except: ['triggers', 'master']

jinja-syntax-check:
extends: .job
stage: unit-tests
tags: [light]
script:
- "find -name '*.j2' -exec tests/scripts/check-templates.py {} +"
except: ['triggers', 'master']

syntax-check:
extends: .job
stage: unit-tests
tags: [light]
variables:
ANSIBLE_INVENTORY: inventory/local-tests.cfg
ANSIBLE_REMOTE_USER: root
ANSIBLE_BECOME: "true"
ANSIBLE_BECOME_USER: root
ANSIBLE_VERBOSITY: "3"
script:
- ansible-playbook --syntax-check cluster.yml
- ansible-playbook --syntax-check playbooks/cluster.yml
- ansible-playbook --syntax-check upgrade-cluster.yml
- ansible-playbook --syntax-check playbooks/upgrade_cluster.yml
- ansible-playbook --syntax-check reset.yml
- ansible-playbook --syntax-check playbooks/reset.yml
- ansible-playbook --syntax-check extra_playbooks/upgrade-only-k8s.yml
except: ['triggers', 'master']

collection-build-install-sanity-check:
extends: .job
stage: unit-tests
tags: [light]
variables:
ANSIBLE_COLLECTIONS_PATH: "./ansible_collections"
script:
- ansible-galaxy collection build
- ansible-galaxy collection install kubernetes_sigs-kubespray-$(grep "^version:" galaxy.yml | awk '{print $2}').tar.gz
- ansible-galaxy collection list $(egrep -i '(name:\s+|namespace:\s+)' galaxy.yml | awk '{print $2}' | tr '\n' '.' | sed 's|\.$||g') | grep "^kubernetes_sigs.kubespray"
- test -f ansible_collections/kubernetes_sigs/kubespray/playbooks/cluster.yml
- test -f ansible_collections/kubernetes_sigs/kubespray/playbooks/reset.yml
except: ['triggers', 'master']

tox-inventory-builder:
stage: unit-tests
tags: [light]
extends: .job
before_script:
- ./tests/scripts/rebase.sh
script:
- pip3 install tox
- cd contrib/inventory_builder && tox
except: ['triggers', 'master']

markdownlint:
stage: unit-tests
tags: [light]
image: node
before_script:
- npm install -g [email protected]
script:
- markdownlint $(find . -name '*.md' | grep -vF './.git') --ignore docs/_sidebar.md --ignore contrib/dind/README.md

generate-sidebar:
extends: .job
stage: unit-tests
tags: [light]
script:
- scripts/gen_docs_sidebar.sh
- git diff --exit-code

check-readme-versions:
stage: unit-tests
tags: [light]
image: python:3
script:
- tests/scripts/check_readme_versions.sh

# TODO: convert to pre-commit hook
check-galaxy-version:
stage: unit-tests
tags: [light]
image: python:3
script:
- tests/scripts/check_galaxy_version.sh

check-typo:
stage: unit-tests
tags: [light]
image: python:3
script:
- tests/scripts/check_typo.sh

ci-matrix:
stage: unit-tests
tags: [light]
image: python:3
script:
- tests/scripts/md-table/test.sh
17 changes: 17 additions & 0 deletions .gitlab-ci/pre-commit-dynamic-stub.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
# stub pipeline for dynamic generation
pre-commit:
tags:
- light
image: 'ghcr.io/pre-commit-ci/runner-image@sha256:aaf2c7b38b22286f2d381c11673bec571c28f61dd086d11b43a1c9444a813cef'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it more readable by changing the ghcr.io/pre-commit-ci/runner-image@sha256:aaf2c7b38b22286f2d381c11673bec571c28f61dd086d11b43a1c9444a813cef
to ghcr.io/pre-commit-ci/runner-image:2024-05-11-4bb81b2-full

variables:
PRE_COMMIT_HOME: /pre-commit-cache
script:
- pre-commit run -a $HOOK_ID
cache:
key: pre-commit-$HOOK_ID
paths:
- /pre-commit-cache
parallel:
matrix:
- HOOK_ID:
16 changes: 0 additions & 16 deletions .gitlab-ci/shellcheck.yml

This file was deleted.

3 changes: 0 additions & 3 deletions .markdownlint.yaml

This file was deleted.

4 changes: 4 additions & 0 deletions .md_style.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
all
exclude_rule 'MD013'
exclude_rule 'MD029'
rule 'MD007', :indent => 2
1 change: 1 addition & 0 deletions .mdlrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
style "#{File.dirname(__FILE__)}/.md_style.rb"
58 changes: 41 additions & 17 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.4.0
rev: v4.6.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
Expand All @@ -15,54 +15,74 @@ repos:
- id: trailing-whitespace

- repo: https://github.com/adrienverge/yamllint.git
rev: v1.27.1
rev: v1.35.1
hooks:
- id: yamllint
args: [--strict]

- repo: https://github.com/markdownlint/markdownlint
rev: v0.11.0
rev: v0.12.0
hooks:
- id: markdownlint
args: [-r, "~MD013,~MD029"]
exclude: "^.git"
exclude: "^.github|(^docs/_sidebar\\.md$)"

- repo: https://github.com/jumanjihouse/pre-commit-hooks
rev: 3.0.0
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
hooks:
- id: shellcheck
args: [--severity, "error"]
args: ["--severity=error"]
exclude: "^.git"
files: "\\.sh$"

- repo: local
- repo: https://github.com/ansible/ansible-lint
rev: v24.5.0
hooks:
- id: ansible-lint
name: ansible-lint
entry: ansible-lint -v
language: python
pass_filenames: false
additional_dependencies:
- .[community]
- ansible==9.5.1
- jsonschema==4.22.0
- jmespath==1.0.1
- netaddr==1.2.1

- repo: https://github.com/VannTen/misspell
# Waiting on https://github.com/golangci/misspell/pull/19 to get merged
rev: 8592a4e
hooks:
- id: misspell
exclude: "OWNERS_ALIASES$"

- repo: local
hooks:
- id: ansible-syntax-check
name: ansible-syntax-check
entry: env ANSIBLE_INVENTORY=inventory/local-tests.cfg ANSIBLE_REMOTE_USER=root ANSIBLE_BECOME="true" ANSIBLE_BECOME_USER=root ANSIBLE_VERBOSITY="3" ansible-playbook --syntax-check
language: python
files: "^cluster.yml|^upgrade-cluster.yml|^reset.yml|^extra_playbooks/upgrade-only-k8s.yml"
additional_dependencies:
- ansible==9.5.1

- id: tox-inventory-builder
name: tox-inventory-builder
entry: bash -c "cd contrib/inventory_builder && tox"
language: python
pass_filenames: false
additional_dependencies:
- tox==4.15.0

- id: check-readme-versions
name: check-readme-versions
entry: tests/scripts/check_readme_versions.sh
language: script
pass_filenames: false

- id: collection-build-install
name: Build and install kubernetes-sigs.kubespray Ansible collection
language: python
additional_dependencies:
- ansible-core>=2.16.4
entry: tests/scripts/collection-build-install.sh
pass_filenames: false

- id: generate-docs-sidebar
name: generate-docs-sidebar
entry: scripts/gen_docs_sidebar.sh
Expand All @@ -71,9 +91,13 @@ repos:

- id: ci-matrix
name: ci-matrix
entry: tests/scripts/md-table/test.sh
language: script
entry: tests/scripts/md-table/main.py
language: python
pass_filenames: false
additional_dependencies:
- jinja2
- pathlib
- pyaml

- id: jinja-syntax-check
name: jinja-syntax-check
Expand All @@ -82,4 +106,4 @@ repos:
types:
- jinja
additional_dependencies:
- Jinja2
- jinja2
1 change: 1 addition & 0 deletions contrib/terraform/nifcloud/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ The setup looks like following

```bash
./generate-inventory.sh > sample-inventory/inventory.ini
```

* Export Variables:

Expand Down
2 changes: 1 addition & 1 deletion contrib/terraform/upcloud/cluster-settings.tfvars
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,4 @@ server_groups = {
# ]
# anti_affinity_policy = "yes"
# }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -558,4 +558,4 @@ resource "upcloud_server_group" "server_groups" {
anti_affinity_policy = each.value.anti_affinity_policy
labels = {}
members = [for server in each.value.servers : merge(upcloud_server.master, upcloud_server.worker)[server].id]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,4 @@ variable "server_groups" {
anti_affinity_policy = string
servers = list(string)
}))
}
}
2 changes: 1 addition & 1 deletion contrib/terraform/upcloud/sample-inventory/cluster.tfvars
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,4 @@ server_groups = {
# ]
# anti_affinity_policy = "yes"
# }
}
}
1 change: 0 additions & 1 deletion docs/cloud_providers/openstack.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

# OpenStack

## Known compatible public clouds
Expand Down
2 changes: 0 additions & 2 deletions docs/operations/recover-control-plane.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

# Recovering the control plane

To recover from broken nodes in the control plane use the "recover\-control\-plane.yml" playbook.
Expand All @@ -8,7 +7,6 @@ Examples of what broken means in this context:
* One or more bare metal node(s) suffer from unrecoverable hardware failure
* One or more node(s) fail during patching or upgrading
* Etcd database corruption

* Other node related failures leaving your control plane degraded or nonfunctional

__Note that you need at least one functional node to be able to recover using this method.__
Expand Down
2 changes: 1 addition & 1 deletion inventory/sample/group_vars/etcd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,4 @@
# etcd_experimental_enable_distributed_tracing: false
# etcd_experimental_distributed_tracing_sample_rate: 100
# etcd_experimental_distributed_tracing_address: "localhost:4317"
# etcd_experimental_distributed_tracing_service_name: etcd
# etcd_experimental_distributed_tracing_service_name: etcd
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ ansible==9.5.1
cryptography==42.0.7
jinja2==3.1.4
jmespath==1.0.1
jsonschema==4.22.0
MarkupSafe==2.1.5
netaddr==1.2.1
pbr==6.0.0
ruamel.yaml==0.18.6
ruamel.yaml.clib==0.2.8
jsonschema==4.22.0
2 changes: 1 addition & 1 deletion roles/container-engine/containerd/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,4 @@ containerd_tracing_enabled: false
containerd_tracing_endpoint: "0.0.0.0:4317"
containerd_tracing_protocol: "grpc"
containerd_tracing_sampling_ratio: 1.0
containerd_tracing_service_name: "containerd"
containerd_tracing_service_name: "containerd"
Loading