mirror of
https://github.com/linux-system-roles/network.git
synced 2026-01-23 02:15:17 +00:00
NOTE: This also requires upgrading to tox-lsr 3.11.0 Ansible 2.19 will be released soon and has some changes which will require fixes in system roles. This adds 2.19 to our testing matrix on fedora 42 so that we can start addressing these issues. python 3.13 is now being used on some platforms. Signed-off-by: Rich Megginson <rmeggins@redhat.com>
84 lines
2.9 KiB
YAML
84 lines
2.9 KiB
YAML
---
|
|
name: Ansible Lint
|
|
on: # yamllint disable-line rule:truthy
|
|
pull_request:
|
|
merge_group:
|
|
branches:
|
|
- main
|
|
types:
|
|
- checks_requested
|
|
push:
|
|
branches:
|
|
- main
|
|
workflow_dispatch:
|
|
env:
|
|
LSR_ROLE2COLL_NAMESPACE: fedora
|
|
LSR_ROLE2COLL_NAME: linux_system_roles
|
|
permissions:
|
|
contents: read
|
|
jobs:
|
|
ansible_lint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Update pip, git
|
|
run: |
|
|
set -euxo pipefail
|
|
sudo apt update
|
|
sudo apt install -y git
|
|
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install tox, tox-lsr
|
|
run: |
|
|
set -euxo pipefail
|
|
pip3 install "git+https://github.com/linux-system-roles/tox-lsr@3.11.0"
|
|
|
|
- name: Convert role to collection format
|
|
id: collection
|
|
run: |
|
|
set -euxo pipefail
|
|
TOXENV=collection lsr_ci_runtox
|
|
coll_dir=".tox/ansible_collections/$LSR_ROLE2COLL_NAMESPACE/$LSR_ROLE2COLL_NAME"
|
|
# cleanup after collection conversion
|
|
rm -rf "$coll_dir/.ansible" .tox/ansible-plugin-scan
|
|
# ansible-lint action requires a .git directory???
|
|
# https://github.com/ansible/ansible-lint/blob/main/action.yml#L45
|
|
mkdir -p "$coll_dir/.git"
|
|
meta_req_file="${{ github.workspace }}/meta/collection-requirements.yml"
|
|
test_req_file="${{ github.workspace }}/tests/collection-requirements.yml"
|
|
if [ -f "$meta_req_file" ] && [ -f "$test_req_file" ]; then
|
|
coll_req_file="${{ github.workspace }}/req.yml"
|
|
python -c 'import sys; import yaml
|
|
hsh1 = yaml.safe_load(open(sys.argv[1]))
|
|
hsh2 = yaml.safe_load(open(sys.argv[2]))
|
|
coll = {}
|
|
for item in hsh1["collections"] + hsh2["collections"]:
|
|
if isinstance(item, dict):
|
|
name = item["name"]
|
|
rec = item
|
|
else:
|
|
name = item # assume string
|
|
rec = {"name": name}
|
|
if name not in coll:
|
|
coll[name] = rec
|
|
hsh1["collections"] = list(coll.values())
|
|
yaml.safe_dump(hsh1, open(sys.argv[3], "w"))' "$meta_req_file" "$test_req_file" "$coll_req_file"
|
|
echo merged "$coll_req_file"
|
|
cat "$coll_req_file"
|
|
elif [ -f "$meta_req_file" ]; then
|
|
coll_req_file="$meta_req_file"
|
|
elif [ -f "$test_req_file" ]; then
|
|
coll_req_file="$test_req_file"
|
|
else
|
|
coll_req_file=""
|
|
fi
|
|
echo "coll_req_file=$coll_req_file" >> $GITHUB_OUTPUT
|
|
|
|
- name: Run ansible-lint
|
|
uses: ansible/ansible-lint@v25
|
|
with:
|
|
working_directory: ${{ github.workspace }}/.tox/ansible_collections/${{ env.LSR_ROLE2COLL_NAMESPACE }}/${{ env.LSR_ROLE2COLL_NAME }}
|
|
requirements_file: ${{ steps.collection.outputs.coll_req_file }}
|
|
env:
|
|
ANSIBLE_COLLECTIONS_PATH: ${{ github.workspace }}/.tox
|