There is a new QEMU based test which uses the qemu/kvm capability of github action runners. This is the basis for new bootc/image mode tests which we will be rolling out in the near future. ansible-lint requires that the collection path is set so that the requirements it installs are installed in the correct place. There has been some general github action deprecation of python versions and ubuntu versions that we have had to fix. Remove `CONTRIBUTOR` from the list of users who can trigger citest. For more information, see * https://github.com/linux-system-roles/.github/pull/98 * https://github.com/linux-system-roles/.github/pull/94 * https://github.com/linux-system-roles/.github/pull/93 * https://github.com/linux-system-roles/.github/pull/92 * https://github.com/linux-system-roles/.github/pull/91 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.5.1"
|
|
|
|
- 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
|