diff --git a/.github/workflows/validate-yaml-lint b/.github/workflows/validate-yaml-lint new file mode 100644 index 000000000..23ce097f4 --- /dev/null +++ b/.github/workflows/validate-yaml-lint @@ -0,0 +1,15 @@ +name: YamlLint +on: + push: + branches: + - main + pull_request: + branches: + - main +jobs: + yamllint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run yamllint make target + run: make yamllint diff --git a/.github/workflows/validate-yaml-lint.yaml b/.github/workflows/validate-yaml-lint.yaml new file mode 100644 index 000000000..23ce097f4 --- /dev/null +++ b/.github/workflows/validate-yaml-lint.yaml @@ -0,0 +1,15 @@ +name: YamlLint +on: + push: + branches: + - main + pull_request: + branches: + - main +jobs: + yamllint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run yamllint make target + run: make yamllint diff --git a/.yamllint b/.yamllint new file mode 100644 index 000000000..a5ba70419 --- /dev/null +++ b/.yamllint @@ -0,0 +1,43 @@ +extends: default + +ignore: + - config # Skip autogenerated config dir from liniting + +rules: + # Rules to control the number of spaces around operators + braces: + min-spaces-inside: 0 # No spaces required inside braces + max-spaces-inside: 1 # Maximum one space inside braces + brackets: + min-spaces-inside: 0 + max-spaces-inside: 1 + colons: + max-spaces-before: 0 + max-spaces-after: 1 + commas: + max-spaces-before: 0 + max-spaces-after: 1 + hyphens: + max-spaces-after: 1 + + # Rules to control indentation + indentation: + spaces: consistent # Spaces should be consistently used for indentation + indent-sequences: whatever # Either indenting or not indenting individual block sequences is OK + comments-indentation: enable # Comments should be indented the same as the content + + # Rules to control lines + line-length: + max: 150 # Maximum 150 characters per line + allow-non-breakable-words: true # Allow long words without breaks + allow-non-breakable-inline-mappings: true # Allow long inline mappings without breaks + empty-lines: + max: 2 # Maximum two consecutive empty lines allowed + trailing-spaces: enable # Ensure no trailing spaces at the end of lines + + # Other rules + comments: + min-spaces-from-content: 1 # At least one space required between content and comment + key-duplicates: enable # Ensure no duplicate keys in mappings + truthy: + allowed-values: ['true', 'false', 'on', 'off'] # Allow only these values for boolean scalars diff --git a/Makefile b/Makefile index 6e08a5cbb..08100b0e2 100644 --- a/Makefile +++ b/Makefile @@ -546,6 +546,17 @@ else echo "Versions are different across Makefiles. Please ensure to keep them uniform." endif + +.PHONY: yamllint +yamllint: + @docker run --rm $$(tty -s && echo "-it" || echo) -v $(PWD):/data cytopia/yamllint:latest /data --config-file /data/.yamllint --no-warnings + +.PHONY: lint-yaml-no-warnings +lint-yaml-no-warnings: ## Run yamllint and won’t output warning level problems + @echo "Running yamllint and won't output warning level problems..." + @yamllint . --no-warnings + @echo "Linting Yaml files completed" + ## -------------------------------------- ## Cleanup / Verification ## -------------------------------------- diff --git a/templates/bases/powervs/kcp.yaml b/templates/bases/powervs/kcp.yaml index bea332cec..01bd9b42a 100644 --- a/templates/bases/powervs/kcp.yaml +++ b/templates/bases/powervs/kcp.yaml @@ -122,7 +122,7 @@ spec: permissions: "0644" - content: | #!/bin/bash - + # Copyright 2020 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -136,30 +136,30 @@ spec: # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - + set -e - + # Configure the workaround required for kubeadm init with kube-vip: # xref: https://github.com/kube-vip/kube-vip/issues/684 - + # Nothing to do for kubernetes < v1.29 KUBEADM_MINOR="$(kubeadm version -o short | cut -d '.' -f 2)" if [[ "$KUBEADM_MINOR" -lt "29" ]]; then exit 0 fi - + IS_KUBEADM_INIT="false" - + # cloud-init kubeadm init if [[ -f /run/kubeadm/kubeadm.yaml ]]; then IS_KUBEADM_INIT="true" fi - + # ignition kubeadm init if [[ -f /etc/kubeadm.sh ]] && grep -q -e "kubeadm init" /etc/kubeadm.sh; then IS_KUBEADM_INIT="true" fi - + if [[ "$IS_KUBEADM_INIT" == "true" ]]; then sed -i 's#path: /etc/kubernetes/admin.conf#path: /etc/kubernetes/super-admin.conf#' \ /etc/kubernetes/manifests/kube-vip.yaml diff --git a/templates/bases/vpc/kcp.yaml b/templates/bases/vpc/kcp.yaml index 217a83d97..deafe82e5 100644 --- a/templates/bases/vpc/kcp.yaml +++ b/templates/bases/vpc/kcp.yaml @@ -26,14 +26,14 @@ spec: initConfiguration: nodeRegistration: criSocket: /var/run/containerd/containerd.sock - kubeletExtraArgs: + kubeletExtraArgs: cloud-provider: external eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%' joinConfiguration: discovery: {} nodeRegistration: criSocket: /var/run/containerd/containerd.sock - kubeletExtraArgs: + kubeletExtraArgs: cloud-provider: external eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%' --- diff --git a/templates/cluster-template-powervs-clusterclass/cluster-with-kcp.yaml b/templates/cluster-template-powervs-clusterclass/cluster-with-kcp.yaml index 3a6ed27b7..56b208ad7 100644 --- a/templates/cluster-template-powervs-clusterclass/cluster-with-kcp.yaml +++ b/templates/cluster-template-powervs-clusterclass/cluster-with-kcp.yaml @@ -53,12 +53,12 @@ spec: ref: apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 kind: KubeadmConfigTemplate - name: "${IBMPOWERVS_CLUSTER_CLASS_NAME}-md-0" + name: "${IBMPOWERVS_CLUSTER_CLASS_NAME}-md-0" infrastructure: ref: apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: IBMPowerVSMachineTemplate - name: "${IBMPOWERVS_CLUSTER_CLASS_NAME}-worker-machinetemplate" + name: "${IBMPOWERVS_CLUSTER_CLASS_NAME}-worker-machinetemplate" --- apiVersion: infrastructure.cluster.x-k8s.io/v1beta2 kind: IBMPowerVSClusterTemplate @@ -166,7 +166,7 @@ spec: permissions: "0644" - content: | #!/bin/bash - + # Copyright 2020 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -180,30 +180,30 @@ spec: # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - + set -e - + # Configure the workaround required for kubeadm init with kube-vip: # xref: https://github.com/kube-vip/kube-vip/issues/684 - + # Nothing to do for kubernetes < v1.29 KUBEADM_MINOR="$(kubeadm version -o short | cut -d '.' -f 2)" if [[ "$KUBEADM_MINOR" -lt "29" ]]; then exit 0 fi - + IS_KUBEADM_INIT="false" - + # cloud-init kubeadm init if [[ -f /run/kubeadm/kubeadm.yaml ]]; then IS_KUBEADM_INIT="true" fi - + # ignition kubeadm init if [[ -f /etc/kubeadm.sh ]] && grep -q -e "kubeadm init" /etc/kubeadm.sh; then IS_KUBEADM_INIT="true" fi - + if [[ "$IS_KUBEADM_INIT" == "true" ]]; then sed -i 's#path: /etc/kubernetes/admin.conf#path: /etc/kubernetes/super-admin.conf#' \ /etc/kubernetes/manifests/kube-vip.yaml diff --git a/templates/cluster-template-powervs/kcp.yaml b/templates/cluster-template-powervs/kcp.yaml index d5200d353..65b9f438a 100644 --- a/templates/cluster-template-powervs/kcp.yaml +++ b/templates/cluster-template-powervs/kcp.yaml @@ -13,4 +13,3 @@ spec: nodeRegistration: kubeletExtraArgs: provider-id: ibmpowervs://${CLUSTER_NAME}/'{{ v1.local_hostname }}' - diff --git a/templates/cluster-template-vpc-clusterclass/cluster-with-kcp.yaml b/templates/cluster-template-vpc-clusterclass/cluster-with-kcp.yaml index cfcec444a..73344a343 100644 --- a/templates/cluster-template-vpc-clusterclass/cluster-with-kcp.yaml +++ b/templates/cluster-template-vpc-clusterclass/cluster-with-kcp.yaml @@ -104,13 +104,13 @@ spec: initConfiguration: nodeRegistration: criSocket: /var/run/containerd/containerd.sock - kubeletExtraArgs: + kubeletExtraArgs: cloud-provider: external eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%' joinConfiguration: discovery: {} nodeRegistration: criSocket: /var/run/containerd/containerd.sock - kubeletExtraArgs: + kubeletExtraArgs: cloud-provider: external eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%' diff --git a/templates/cluster-template/cluster.yaml b/templates/cluster-template/cluster.yaml index a89e4d0c2..05c4be781 100644 --- a/templates/cluster-template/cluster.yaml +++ b/templates/cluster-template/cluster.yaml @@ -5,4 +5,3 @@ metadata: namespace: "${NAMESPACE}" labels: ccm: external - diff --git a/templates/cluster-template/kcp.yaml b/templates/cluster-template/kcp.yaml index acc2b3141..99fb17ce6 100644 --- a/templates/cluster-template/kcp.yaml +++ b/templates/cluster-template/kcp.yaml @@ -12,4 +12,3 @@ spec: apiServer: extraArgs: cloud-provider: external - diff --git a/test/e2e/data/cni/calico/calico.yaml b/test/e2e/data/cni/calico/calico.yaml index 59cf30942..950c74d18 100644 --- a/test/e2e/data/cni/calico/calico.yaml +++ b/test/e2e/data/cni/calico/calico.yaml @@ -4229,7 +4229,7 @@ rules: resources: - endpointslices verbs: - - watch + - watch - list - apiGroups: [""] resources: