This will make the qemu/kvm tests be tested in either ascending or descending ASCII order. This should give us better test coverage of clean up scenarios which may fail depending on the order of the previous tests. Rename the qemu/kvm tests so that the statuses are shorter and more intuitive. Improve qemu/kvm test failure error reporting. Signed-off-by: Rich Megginson <rmeggins@redhat.com>
85 lines
2.9 KiB
YAML
85 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.8.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
|