Unify testing builds

Unify Ansible testing builds into a single job
Add a few basic "unit test" Ansible builds
Update dependencies
This commit is contained in:
Greg Hellings
2022-05-06 14:47:43 -05:00
committed by GitHub
parent 5ed8975af7
commit e2e22cae6e
9 changed files with 89 additions and 29 deletions
+41 -15
View File
@@ -29,8 +29,7 @@ jobs:
name: Collect all Ansible-related jobs name: Collect all Ansible-related jobs
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
scenarios: ${{ steps.collection.outputs.tox-envs }} all: ${{ steps.zipped.outputs.scenarios }}
vagrant: ${{ steps.vagrant.outputs.tox-envs }}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
@@ -50,23 +49,50 @@ jobs:
uses: greg-hellings/tox-list@v1 uses: greg-hellings/tox-list@v1
with: with:
tox-args: --ansible-driver vagrant tox-args: --ansible-driver vagrant
- id: zipped
name: Zip arrays together
shell: python
run: |
import json
ubuntu = json.loads('${{ steps.collection.outputs.tox-envs }}')
macos = json.loads('${{ steps.vagrant.outputs.tox-envs }}')
ub_zip = [{'os': 'ubuntu-latest', 'scenario': u} for u in ubuntu]
mac_zip = [{'os': 'macos-10.15', 'scenario': m} for m in macos]
print("::set-output name=scenarios::" + json.dumps(ub_zip + mac_zip))
lint: lint:
name: Lint Ansible code name: Lint Ansible code
uses: devroles/meta_test/.github/workflows/lint.yml@master runs-on: ubuntu-latest
steps:
vagrant_build: - uses: actions/checkout@v3
name: Ansible tests on VMs with:
needs: submodules: true
- collect - name: Install Python
uses: devroles/meta_test/.github/workflows/vagrant_build.yml@master uses: actions/setup-python@v2
with: - name: Install dependencies
scenarios: "${{ needs.collect.outputs.vagrant }}" run: |-
set -ex
python -m pip install --upgrade tox ansible
ansible-galaxy collection install -r ansible/requirements.yml
- name: Run lint
run: tox -e lint_all
build: build:
name: Ansible tests on containers name: Ansible tests on roles
runs-on: ${{ matrix.scenarios.os }}
needs: needs:
- collect - collect
uses: devroles/meta_test/.github/workflows/container_build.yml@master strategy:
with: fail-fast: false
scenarios: "${{ needs.collect.outputs.scenarios }}" matrix:
scenarios: "${{ fromJson(needs.collect.outputs.all) }}"
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install Python
uses: actions/setup-python@v2
- name: Install dependencies
run: python -m pip install --upgrade tox
- name: Run scenario
run: tox -e "${{ matrix.scenarios.scenario }}"
+3 -11
View File
@@ -1,8 +1,8 @@
dependency: dependency:
name: galaxy name: galaxy
options: options:
role-file: ../../requirements.yml # relative to the role dir role-file: ../requirements.yml # relative to the role dir
requirements-file: ../../requirements.yml requirements-file: ../requirements.yml
provisioner: provisioner:
name: ansible name: ansible
playbooks: # These paths are relative to scenario dir playbooks: # These paths are relative to scenario dir
@@ -15,14 +15,6 @@ provisioner:
force_color: true force_color: true
remote_tmp: /tmp/${USER}/ansible remote_tmp: /tmp/${USER}/ansible
verifier: verifier:
name: testinfra name: ansible
options:
# Add a -v so you see the individual test names,
# particularly useful with parameterized tests
v: true
junit-xml: junit.xml
# Using the shared directory is useful for sharing tests across scenarios,
# but is not a requirement. For scenario specific tests, add the appropriate
# file path to the test or test directory below
additional_files_or_dirs: additional_files_or_dirs:
- ../../shared/tests # relative to the scenario tests dir - ../../shared/tests # relative to the scenario tests dir
+2 -1
View File
@@ -1,2 +1,3 @@
collections: collections:
- devroles.system - name: devroles.system
version: "3.0.0"
@@ -0,0 +1,3 @@
- hosts: all
roles:
- init
@@ -0,0 +1,8 @@
driver:
name: vagrant
provider:
name: libvirt
platforms:
- name: test-ubuntu16-init
image: ubuntu:16.04
box: generic/ubuntu1604
@@ -0,0 +1,11 @@
- hosts: all
tasks:
- name: Read init file
ansible.builtin.slurp:
path: /etc/default/console-setup
register: __slurped
- name: Validate desired string is present
assert:
that: >-
'ACTIVE_CONSOLES="/dev/tty1"' in ( __slurped["content"] | b64decode )
@@ -0,0 +1,8 @@
driver:
name: vagrant
provider:
name: libvirt
platforms:
- name: test-ubuntu18-init
image: ubuntu:18.04
box: generic/ubuntu1804
@@ -0,0 +1,11 @@
- hosts: all
tasks:
- name: Read init file
ansible.builtin.slurp:
path: /etc/default/console-setup
register: __slurped
- name: Validate desired string is present
assert:
that: >-
'ACTIVE_CONSOLES="/dev/tty1"' in ( __slurped["content"] | b64decode )
+2 -2
View File
@@ -1,3 +1,3 @@
init_file: /etc/default/console-setup init_file: /etc/default/console-setup
init_regexp: '^(ACTIVE_CONSOLES="/dev/tty).*' init_regexp: '^(ACTIVE_CONSOLES="/dev/tty).*"'
init_replace: \g<1>1 init_replace: \g<1>1"