name: Tests on: push: branches: - master pull_request: {} env: PY_COLORS: '1' jobs: lint: name: Lint runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python id: setup-python uses: actions/setup-python@v4 with: python-version-file: '.python-version' - name: Tox cache id: tox-cache uses: actions/cache@v3 with: path: ~/.cache/pip key: tox-${{ hashFiles('requirements/tox.txt') }}-py${{ steps.setup-python.outputs.python-version}} - name: Lint cache id: lint-cache uses: actions/cache@v3 with: path: .tox key: lint-${{ hashFiles('requirements/lint.txt') }}-py${{ steps.setup-python.outputs.python-version}} - name: Install tox run: pip3 install --no-compile -r requirements/tox.txt - name: Lint run: tox --colored=yes run -e lint - name: Compact lint cache if: steps.lint-cache.outputs.cache-hit != 'true' run: find .tox -name '__pycache__' -exec rm -rf {} + - name: Compact tox cache if: steps.tox-cache.outputs.cache-hit != 'true' run: find ~/.cache/pip -name '__pycache__' -exec rm -rf {} + test: name: Molecule test runs-on: ubuntu-20.04 strategy: max-parallel: 3 matrix: architecture: - amd64 ansible-version: - max molecule-scenario: - rocky - debian-max - debian-min - default - ubuntu-min - fedora - opensuse include: - architecture: arm ansible-version: max molecule-scenario: ubuntu-arm32v7 - architecture: arm64 ansible-version: max molecule-scenario: ubuntu-arm64v8 - architecture: amd64 ansible-version: min molecule-scenario: default steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python id: setup-python uses: actions/setup-python@v4 with: python-version-file: '.python-version' - name: Tox cache id: tox-cache uses: actions/cache@v3 with: path: ~/.cache/pip key: tox-${{ hashFiles('requirements/tox.txt') }}-py${{ steps.setup-python.outputs.python-version}} - name: Molecule cache id: molecule-cache uses: actions/cache@v3 with: path: .tox key: molecule-${{ hashFiles(format('requirements/ansible-{0}.txt', matrix.ansible-version)) }}-py${{ steps.setup-python.outputs.python-version}} - name: Set up QEMU if: matrix.architecture != 'amd64' id: qemu uses: docker/setup-qemu-action@v3 with: image: tonistiigi/binfmt:latest platforms: ${{ matrix.architecture }} - name: Install tox run: pip3 install --no-compile -r requirements/tox.txt - name: Molecule test run: tox --colored=yes run -e ansible-${{ matrix.ansible-version }} -- --scenario-name=${{ matrix.molecule-scenario }} - name: Compact Molecule cache if: steps.molecule-cache.outputs.cache-hit != 'true' run: find .tox -name '__pycache__' -exec rm -rf {} + - name: Compact tox cache if: steps.tox-cache.outputs.cache-hit != 'true' run: find ~/.cache/pip -name '__pycache__' -exec rm -rf {} + test-all: if: ${{ always() }} name: Test (matrix) runs-on: ubuntu-20.04 needs: - lint - test steps: - name: Check test matrix status run: "[[ '${{ needs.test.result }}' == 'success' ]] || exit 1"