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-22.04 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-22.04 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-22.04', 'scenario': u} for u in ubuntu] mac_zip = [{'os': 'ubuntu-22.04', '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-22.04 steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup test environment 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 - uses: ./.github/actions/install_packer - name: Install libvirt shell: bash run: | set -exo pipefail sudo apt-get install libvirt-daemon-system sudo usermod -a -G libvirt $USER sudo systemctl start libvirtd sudo ls -la /var/run/libvirt/ - name: Run scenario run: | set -ex TOX="$(which tox)" sudo -E su -m -c "groups && ${TOX} -e \"${{ matrix.scenarios.scenario }}\" -- --destroy=never" $USER - name: Get possible output if: ${{ failure() }} run: | set -x cat /home/runner/.cache/molecule/init/ubuntu18/vagrant.err