Files
vms/.github/workflows/test.yml
T

88 lines
2.4 KiB
YAML

name: Test the components of it
"on":
push:
branches:
- main
paths-ignore:
- .github/workflow/build.yml
- http/**
- README.box.md
- README.md
- LICENSE
pull_request:
workflow_dispatch:
jobs:
validate:
name: Validate Packer templates are reasonable
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- uses: ./.github/actions/install_packer
- name: Run syntax check
run: |
set -exo pipefail
for vars in distros/*; do
if [[ "${vars}" == *.sh ]]; then
"./${vars}"
vars=${vars%.sh}
fi
packer validate -except=upload -var-file=${vars} sources/
done
collect:
name: Collect all Ansible-related jobs
runs-on: ubuntu-latest
outputs:
all: ${{ steps.zipped.outputs.scenarios }}
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- name: Collect dependencies
id: collection
uses: greg-hellings/tox-list@v1
with:
tox-args: --ansible-driver docker --ansible-driver podman --ansible-driver containers
- id: vagrant
uses: greg-hellings/tox-list@v1
with:
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:
name: Lint Ansible code
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
with:
ansible: true
- name: Run lint
run: tox -e lint_all
build:
name: Ansible tests on roles
runs-on: ${{ matrix.scenarios.os }}
needs:
- collect
strategy:
fail-fast: false
matrix:
scenarios: "${{ fromJson(needs.collect.outputs.all) }}"
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- name: Run scenario
run: tox -e "${{ matrix.scenarios.scenario }}"