From d2a1ac3b0cc55f1a2175b8df58790cf3587b3641 Mon Sep 17 00:00:00 2001 From: MarkusTeufelberger Date: Wed, 10 Apr 2019 11:04:16 +0200 Subject: [PATCH] Add Ansible-lint CI step (#4411) * Add ansible-lint as gitlab-ci step * Fix jinja2 syntax in include_tasks that breaks ansible-lint * Use a block scalar to get around gitlab quoting/escaping rules * Run ansible-lint in verbose mode in CI --- .ansible-lint | 25 +++++++++++++++++++++++++ .gitlab-ci.yml | 8 ++++++++ roles/download/tasks/main.yml | 3 ++- tests/requirements.txt | 1 + 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .ansible-lint diff --git a/.ansible-lint b/.ansible-lint new file mode 100644 index 000000000..c9b136abf --- /dev/null +++ b/.ansible-lint @@ -0,0 +1,25 @@ +--- +parseable: true +skip_list: + # see https://docs.ansible.com/ansible-lint/rules/default_rules.html for a list of all default rules + # The following rules throw errors. + # These either still need to be corrected in the repository and the rules re-enabled or they are skipped on purpose. + - '102' + - '103' + - '104' + - '201' + - '204' + - '206' + - '301' + - '302' + - '303' + - '305' + - '306' + - '403' + - '404' + - '502' + - '503' + - '504' + - '601' + - '602' + - '701' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4f84e776..5c391543d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -731,6 +731,14 @@ yamllint: - yamllint . except: ['triggers', 'master'] +ansible-lint: + <<: *job + stage: unit-tests + # lint every yml/yaml file that looks like it contains Ansible plays + script: |- + grep -Rl '^- hosts: \|^ hosts: \|^- name: ' --include \*.yml --include \*.yaml . | xargs ansible-lint -v + except: ['triggers', 'master'] + tox-inventory-builder: stage: unit-tests <<: *job diff --git a/roles/download/tasks/main.yml b/roles/download/tasks/main.yml index 80002fc2b..06ad9505a 100644 --- a/roles/download/tasks/main.yml +++ b/roles/download/tasks/main.yml @@ -4,9 +4,10 @@ - not skip_downloads|default(false) - name: "Download items" - include_tasks: "download_{% if download.container %}container{% else %}file{% endif %}.yml" + include_tasks: "{{ include_file }}" vars: download: "{{ download_defaults | combine(item.value) }}" + include_file: "download_{% if download.container %}container{% else %}file{% endif %}.yml" with_dict: "{{ downloads }}" when: - not skip_downloads|default(false) diff --git a/tests/requirements.txt b/tests/requirements.txt index 37067448d..9a0a959d3 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -5,3 +5,4 @@ boto==2.9.0 tox dopy PyCrypto +ansible-lint==4.1.0