mirror of
https://github.com/trailofbits/algo.git
synced 2026-08-17 21:25:50 +02:00
fix: add explicit bool filters for Ansible 12 jinja2_native compatibility (#14963)
* fix: add explicit bool filters for Ansible 12 jinja2_native compatibility Ansible 12 enables jinja2_native by default, which means string values like "true"/"false" are no longer automatically coerced to booleans in when: conditions and Jinja2 if statements. Add | bool filters to all boolean variable references in tasks, templates, and handlers. Also reformats long single-line Jinja2 conditionals into multi-line for readability, fixes GCE default() calls for native mode, adds help command to the algo script, and updates test fixtures to register the bool filter. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci: add j2lint for Jinja2 template linting Add j2lint (aristanetworks/j2lint) to catch syntax errors, spacing issues, and operator formatting in Jinja2 templates. Integrated into pre-commit hooks, lint.yml CI, and smart-tests.yml. Rules S3/S5/S6/S7/V1 are ignored — they enforce conventions incompatible with Ansible's config-file-embedded templates. Also fixes int+1 → int + 1 operator spacing in server.conf.j2. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve all ansible-lint warnings and enforce zero-tolerance policy Fix 18 jinja[spacing] errors across 12 files by moving Jinja2 block delimiters to prevent YAML >- folding from introducing trailing spaces. Fix 27 key-order[task] warnings across 17 files by reordering task keys to canonical order (name → when → tags → environment → become → block). Promote key-order[task] and yaml[line-length] from warn_list to hard errors by removing warn_list entirely from .ansible-lint. Add zero-tolerance warning policy to CLAUDE.md explaining why warnings are unacceptable in a security tool and documenting resolution order. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
0056bc725c
commit
984831bcab
@@ -51,6 +51,28 @@ jobs:
|
||||
- name: Run yamllint
|
||||
run: uv run --with yamllint yamllint -c .yamllint .
|
||||
|
||||
jinja2-lint:
|
||||
name: Jinja2 template linting
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup uv environment
|
||||
uses: ./.github/actions/setup-uv
|
||||
|
||||
- name: Run j2lint
|
||||
run: |
|
||||
# Lint Jinja2 templates for syntax and style issues
|
||||
# Ignored rules (incompatible with Ansible config-file templates):
|
||||
# S3: indentation (dictated by output format, not Jinja style)
|
||||
# S5: tabs (some config formats require them)
|
||||
# S6: whitespace-control delimiters ({%- -%} are standard Ansible)
|
||||
# S7: single-statement-per-line (inline Jinja in config output)
|
||||
# V1: lowercase variables (existing names like IP_subject_alt_name)
|
||||
uv run --with j2lint j2lint roles/ --ignore S3 S5 S6 S7 V1
|
||||
|
||||
python-lint:
|
||||
name: Python linting
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
@@ -59,6 +59,7 @@ jobs:
|
||||
- '**/*.yml'
|
||||
- '**/*.yaml'
|
||||
- '**/*.sh'
|
||||
- '**/*.j2'
|
||||
- '.ansible-lint'
|
||||
- '.yamllint'
|
||||
- 'pyproject.toml'
|
||||
@@ -254,6 +255,11 @@ jobs:
|
||||
# Run Ansible linter
|
||||
uv run --with ansible-lint ansible-lint
|
||||
|
||||
# Check Jinja2 templates
|
||||
if git diff --name-only "${BASE_SHA}" "${HEAD_SHA}" | grep -q '\.j2$'; then
|
||||
uv run --with j2lint j2lint roles/ --ignore S3 S5 S6 S7 V1
|
||||
fi
|
||||
|
||||
# Check shell scripts if any changed
|
||||
if git diff --name-only "${BASE_SHA}" "${HEAD_SHA}" | grep -q '\.sh$'; then
|
||||
find . -name "*.sh" -type f -not -path "./.git/*" -exec shellcheck {} +
|
||||
|
||||
Reference in New Issue
Block a user