name: Collection build and tests on: push: pull_request: schedule: - cron: 3 0 * * * # Run daily at 0:03 UTC jobs: build-collection-artifact: name: Build runs-on: ${{ matrix.runner-os }} strategy: matrix: runner-os: - ubuntu-22.04 ansible-version: - git+https://github.com/ansible/ansible.git@stable-2.15 runner-python-version: - 3.9 steps: - name: Check out ${{ github.repository }} on disk uses: actions/checkout@v5 - name: Set up Python ${{ matrix.runner-python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.runner-python-version }} - name: Set up pip cache uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('tests/sanity/requirements.txt') }}-${{ hashFiles('tests/unit/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- ${{ runner.os }}- - name: Install Ansible ${{ matrix.ansible-version }} run: >- python -m pip install --user '${{ matrix.ansible-version }}' - name: Build a collection tarball run: >- ~/.local/bin/ansible-galaxy collection build --output-path "${GITHUB_WORKSPACE}/.cache/collection-tarballs" - name: Store migrated collection artifacts uses: actions/upload-artifact@v4 with: name: collection path: .cache/collection-tarballs sanity-test-collection-via-containers: name: Sanity in container via Py-${{ matrix.python-version }} & ${{ matrix.ansible-version }} needs: - build-collection-artifact runs-on: ${{ matrix.runner-os }} strategy: fail-fast: false matrix: runner-os: - ubuntu-22.04 runner-python-version: - '3.11' ansible-version: - git+https://github.com/ansible/ansible.git@stable-2.18 - git+https://github.com/ansible/ansible.git@devel python-version: - '3.11' include: - runner-os: ubuntu-22.04 runner-python-version: '3.12' ansible-version: git+https://github.com/ansible/ansible.git@devel python-version: '3.12' exclude: - runner-os: ubuntu-22.04 runner-python-version: '3.11' ansible-version: git+https://github.com/ansible/ansible.git@devel python-version: '3.11' steps: - name: Set up Python ${{ matrix.runner-python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.runner-python-version }} - name: Set up pip cache uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ github.ref }}-sanity-containers restore-keys: | ${{ runner.os }}-pip- ${{ runner.os }}- - name: Install Ansible ${{ matrix.ansible-version }} run: >- python -m pip install --user '${{ matrix.ansible-version }}' - name: Download migrated collection artifacts uses: actions/download-artifact@v5 with: name: collection path: .cache/collection-tarballs - name: Install the collection tarball run: >- ~/.local/bin/ansible-galaxy collection install .cache/collection-tarballs/*.tar.gz - name: Run collection sanity tests run: >- ~/.local/bin/ansible-test sanity --color --requirements --python "${{ matrix.python-version }}" -vvv plugins/ tests/ working-directory: >- /home/runner/.ansible/collections/ansible_collections/containers/podman # When we have unit tests, add them here