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 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 }}"