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:
+41
-15
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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 )
|
||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user