131 lines
4.8 KiB
YAML
131 lines
4.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
# Run CI against all pushes (direct commits, also merged PRs), Pull Requests
|
|
push:
|
|
pull_request:
|
|
# Runs CI on every day (at 06:00 UTC)
|
|
schedule:
|
|
- cron: '0 6 * * *'
|
|
|
|
jobs:
|
|
build:
|
|
name: Build collection
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ansible-version: [stable-2.10, stable-2.11]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Set up Python 3.8
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.8
|
|
|
|
- name: Install ansible (${{ matrix.ansible-version }})
|
|
run: pip install pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check
|
|
|
|
- name: Build a collection tarball
|
|
run: ansible-galaxy collection build --output-path "${GITHUB_WORKSPACE}/.cache/collection-tarballs"
|
|
|
|
- name: Store migrated collection artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: collection
|
|
path: .cache/collection-tarballs
|
|
|
|
###
|
|
# Unit tests (OPTIONAL)
|
|
#
|
|
# https://docs.ansible.com/ansible/latest/dev_guide/testing_units.html
|
|
|
|
unit:
|
|
name: Unit Tests
|
|
needs: [build]
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python-version: [2.7, 3.8, 3.9]
|
|
ansible-version: [stable-2.10, stable-2.11, devel]
|
|
exclude:
|
|
- ansible-version: devel
|
|
python-version: 2.7
|
|
|
|
steps:
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install ansible (${{ matrix.ansible-version }}) version
|
|
run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check
|
|
|
|
- name: Download migrated collection artifacts
|
|
uses: actions/download-artifact@v1
|
|
with:
|
|
name: collection
|
|
path: .cache/collection-tarballs
|
|
|
|
- name: Setup Unit test Pre-requisites
|
|
run: |
|
|
ansible-galaxy collection install .cache/collection-tarballs/*.tar.gz
|
|
git clone https://github.com/ansible/ansible.git
|
|
cp -rf ansible/test/units/compat /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage/tests/unit/
|
|
cp -rf ansible/test/units/modules/utils.py /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage/tests/unit/plugins/modules/
|
|
sed -i 's/units/ansible_collections.dellemc.openmanage.tests.unit/' /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage/tests/unit/plugins/modules/utils.py
|
|
if [ -f /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage/tests/requirements.txt ]; then pip install -r /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage/tests/requirements.txt; fi
|
|
|
|
|
|
- name: Run Unit tests using ansible-test
|
|
run: ansible-test units -v --color --python ${{ matrix.python-version }} --coverage
|
|
working-directory: /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage
|
|
|
|
- name: Generate coverage report
|
|
run: ansible-test coverage xml -v --group-by command --group-by version
|
|
working-directory: /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage
|
|
|
|
###
|
|
# Sanity tests (REQUIRED)
|
|
#
|
|
# https://docs.ansible.com/ansible/latest/dev_guide/testing_sanity.html
|
|
|
|
sanity:
|
|
name: Sanity Tests
|
|
runs-on: ubuntu-latest
|
|
needs: [build]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ansible-version: [stable-2.9, stable-2.10, stable-2.11, devel]
|
|
|
|
steps:
|
|
- name: Set up Python 3.8
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
# it is just required to run that once as "ansible-test sanity" in the docker image
|
|
# will run on all python versions it supports.
|
|
python-version: 3.8
|
|
|
|
- name: Install ansible (${{ matrix.ansible-version }}) version
|
|
run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check
|
|
|
|
- name: Download migrated collection artifacts
|
|
uses: actions/download-artifact@v1
|
|
with:
|
|
name: collection
|
|
path: .cache/collection-tarballs
|
|
|
|
- name: Setup Sanity test Pre-requisites
|
|
run: ansible-galaxy collection install .cache/collection-tarballs/*.tar.gz
|
|
|
|
# run ansible-test sanity inside of Docker.
|
|
# The docker container has all the pinned dependencies that are required
|
|
# and all python versions ansible supports.
|
|
- name: Run sanity tests
|
|
run: ansible-test sanity --docker -v --color
|
|
working-directory: /home/runner/.ansible/collections/ansible_collections/dellemc/openmanage
|