From 67b0c0824f4557f144be62239ecc5e26897cc9cd Mon Sep 17 00:00:00 2001 From: mr-forust Date: Tue, 30 Jun 2026 01:12:23 +0200 Subject: [PATCH] ci: restore docker-based lint and validate jobs --- .gitea/workflows/lint.yaml | 45 +++++++++++++++------------------ .gitea/workflows/validate.yaml | 25 +++++++++--------- .github/workflows/lint.yaml | 45 +++++++++++++++------------------ .github/workflows/validate.yaml | 25 +++++++++--------- 4 files changed, 68 insertions(+), 72 deletions(-) diff --git a/.gitea/workflows/lint.yaml b/.gitea/workflows/lint.yaml index ca07230..3b8e336 100644 --- a/.gitea/workflows/lint.yaml +++ b/.gitea/workflows/lint.yaml @@ -28,12 +28,11 @@ jobs: exit 0 fi - command -v prettier >/dev/null 2>&1 || { - echo "prettier is required on PATH but was not found." - exit 1 - } - - prettier --check --ignore-unknown "${prettier_files[@]}" + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + node:22-alpine \ + sh -lc 'npx --yes prettier@3 --check --ignore-unknown "$@"' sh "${prettier_files[@]}" ruff: runs-on: [self-hosted, linux, arch, homelab] @@ -44,12 +43,11 @@ jobs: - name: Lint Python with Ruff shell: bash run: | - command -v ruff >/dev/null 2>&1 || { - echo "ruff is required on PATH but was not found." - exit 1 - } - - ruff check . + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + ghcr.io/astral-sh/ruff:latest \ + check . yamllint: runs-on: [self-hosted, linux, arch, homelab] @@ -60,12 +58,11 @@ jobs: - name: Lint YAML syntax shell: bash run: | - command -v yamllint >/dev/null 2>&1 || { - echo "yamllint is required on PATH but was not found." - exit 1 - } - - yamllint -c .yamllint . + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + cytopia/yamllint:latest \ + -c .yamllint . hadolint: runs-on: [self-hosted, linux, arch, homelab] @@ -85,9 +82,9 @@ jobs: exit 0 fi - command -v hadolint >/dev/null 2>&1 || { - echo "hadolint is required on PATH but was not found." - exit 1 - } - - hadolint -c .hadolint.yaml "${dockerfiles[@]}" + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + --entrypoint hadolint \ + hadolint/hadolint:latest-debian \ + -c .hadolint.yaml "${dockerfiles[@]}" diff --git a/.gitea/workflows/validate.yaml b/.gitea/workflows/validate.yaml index 9e717e0..f29dddd 100644 --- a/.gitea/workflows/validate.yaml +++ b/.gitea/workflows/validate.yaml @@ -17,12 +17,11 @@ jobs: - name: Lint YAML syntax shell: bash run: | - command -v yamllint >/dev/null 2>&1 || { - echo "yamllint is required on PATH but was not found." - exit 1 - } - - yamllint -c .yamllint . + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + cytopia/yamllint:latest \ + -c .yamllint . k8s: runs-on: [self-hosted, linux, arch, homelab] @@ -43,9 +42,11 @@ jobs: exit 0 fi - command -v kubeconform >/dev/null 2>&1 || { - echo "kubeconform is required on PATH but was not found." - exit 1 - } - - kubeconform -strict -ignore-missing-schemas -summary "${manifests[@]}" + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + ghcr.io/yannh/kubeconform:latest \ + -strict \ + -ignore-missing-schemas \ + -summary \ + "${manifests[@]}" diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index ca07230..3b8e336 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -28,12 +28,11 @@ jobs: exit 0 fi - command -v prettier >/dev/null 2>&1 || { - echo "prettier is required on PATH but was not found." - exit 1 - } - - prettier --check --ignore-unknown "${prettier_files[@]}" + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + node:22-alpine \ + sh -lc 'npx --yes prettier@3 --check --ignore-unknown "$@"' sh "${prettier_files[@]}" ruff: runs-on: [self-hosted, linux, arch, homelab] @@ -44,12 +43,11 @@ jobs: - name: Lint Python with Ruff shell: bash run: | - command -v ruff >/dev/null 2>&1 || { - echo "ruff is required on PATH but was not found." - exit 1 - } - - ruff check . + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + ghcr.io/astral-sh/ruff:latest \ + check . yamllint: runs-on: [self-hosted, linux, arch, homelab] @@ -60,12 +58,11 @@ jobs: - name: Lint YAML syntax shell: bash run: | - command -v yamllint >/dev/null 2>&1 || { - echo "yamllint is required on PATH but was not found." - exit 1 - } - - yamllint -c .yamllint . + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + cytopia/yamllint:latest \ + -c .yamllint . hadolint: runs-on: [self-hosted, linux, arch, homelab] @@ -85,9 +82,9 @@ jobs: exit 0 fi - command -v hadolint >/dev/null 2>&1 || { - echo "hadolint is required on PATH but was not found." - exit 1 - } - - hadolint -c .hadolint.yaml "${dockerfiles[@]}" + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + --entrypoint hadolint \ + hadolint/hadolint:latest-debian \ + -c .hadolint.yaml "${dockerfiles[@]}" diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index 9e717e0..f29dddd 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -17,12 +17,11 @@ jobs: - name: Lint YAML syntax shell: bash run: | - command -v yamllint >/dev/null 2>&1 || { - echo "yamllint is required on PATH but was not found." - exit 1 - } - - yamllint -c .yamllint . + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + cytopia/yamllint:latest \ + -c .yamllint . k8s: runs-on: [self-hosted, linux, arch, homelab] @@ -43,9 +42,11 @@ jobs: exit 0 fi - command -v kubeconform >/dev/null 2>&1 || { - echo "kubeconform is required on PATH but was not found." - exit 1 - } - - kubeconform -strict -ignore-missing-schemas -summary "${manifests[@]}" + docker run --rm \ + -v "$PWD:/work" \ + -w /work \ + ghcr.io/yannh/kubeconform:latest \ + -strict \ + -ignore-missing-schemas \ + -summary \ + "${manifests[@]}"