Skip to content

CI

CI #1118

Workflow file for this run

name: CI
on:
pull_request:
schedule:
- cron: "0 3 * * *"
jobs:
sanity:
runs-on: ubuntu-20.04
defaults:
run:
working-directory: ansible_collections/community/elastic
strategy:
matrix:
ansible_version:
- stable-2.13
- devel
steps:
- name: Check out code
uses: actions/checkout@v3
with:
path: ansible_collections/community/elastic
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install ansible-base (${{ matrix.ansible_version }})
uses: nick-invision/retry@v2
with:
timeout_minutes: 3
max_attempts: 3
command: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible_version }}.tar.gz --disable-pip-version-check
- name: Run sanity tests
run: ansible-test sanity --docker -v --color
#units:
# runs-on: ubuntu-20.04
# defaults:
# run:
# working-directory: ansible_collections/community/elastic
# steps:
# - name: Check out code
# uses: actions/checkout@v3
# with:
# path: ansible_collections/community/elastic
# - name: Set up Python 3.6
# uses: actions/setup-python@v4
# with:
# python-version: 3.6
# - name: Install ansible-base (devel)
# uses: nick-invision/retry@v2
# with:
# timeout_minutes: 3
# max_attempts: 3
# command: pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check
# - name: Run unit tests
# run: ansible-test units --docker -v --color --python 3.6 --coverage
# - name: Generate coverage report.
# run: ansible-test coverage xml -v --requirements --group-by command --group-by version
# - uses: codecov/codecov-action@v1
# with:
# fail_ci_if_error: false
integration_matrix:
runs-on: ubuntu-20.04
defaults:
run:
working-directory: ansible_collections/community/elastic
outputs:
matrix: ${{ steps.json-list.outputs.modules-to-test }}
steps:
- name: Check out code
uses: actions/checkout@v3
with:
path: ansible_collections/community/elastic
- name: Generate module list
run: |
find tests/integration/targets -type d -maxdepth 1 -not -name 'setup*' | cut -d '/' -f4 | sort | awk NF | jq -sRc 'split("\n") | map(select(length > 0))' > int_test_modules.json
- name: Set output variable
id: json-list
run: |
output=$(cat int_test_modules.json)
echo "modules-to-test=$output" >> $GITHUB_OUTPUT
echo "$output"
integration:
needs: integration_matrix
runs-on: ubuntu-20.04
defaults:
run:
working-directory: ansible_collections/community/elastic
strategy:
matrix:
elastic_module: ${{ fromJson(needs.integration_matrix.outputs.matrix) }}
ansible_version_combinations:
- ansible_version: stable-2.10
python_version: 3.6
- ansible_version: stable-2.11
python_version: 3.6
- ansible_version: stable-2.12
python_version: 3.8
- ansible_version: stable-2.13
python_version: 3.9
- ansible_version: devel
python_version: 3.9
elasticsearch_version_combinations:
- elasticsearch_version: 7.10.1
kibana_version: 7.10.1
steps:
- name: Check out code
uses: actions/checkout@v3
with:
path: ansible_collections/community/elastic
- name: Set up Python ${{ matrix.ansible_version_combinations.python_version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.ansible_version_combinations.python_version }}
- name: Install python packages
uses: nick-invision/retry@v2
with:
timeout_minutes: 3
max_attempts: 3
command: pip install docker elasticsearch==7.* requests coverage
- name: Install ansible-base (${{ matrix.ansible_version_combinations.ansible_version }})
uses: nick-invision/retry@v2
with:
timeout_minutes: 3
max_attempts: 3
command: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible_version_combinations.ansible_version }}.tar.gz --disable-pip-version-check
- name: Install community.general
uses: nick-invision/retry@v2
with:
timeout_minutes: 3
max_attempts: 3
command: ansible-galaxy collection install community.general -p ansible_collections/
- name: Install community.docker
uses: nick-invision/retry@v2
with:
timeout_minutes: 3
max_attempts: 3
command: ansible-galaxy collection install community.docker -p ansible_collections/
- name: Set integration_config.yml
run: |
echo "elasticsearch_version: ${{ matrix.elasticsearch_version_combinations.elasticsearch_version }}" >> tests/integration/integration_config.yml
echo "kibana_version: ${{ matrix.elasticsearch_version_combinations.kibana_version }}" >> tests/integration/integration_config.yml
- name: >-
Run integration tests on Python ${{ matrix.ansible_version_combinations.python_version }} |
Ansible ${{ matrix.ansible_version_combinations.ansible_version }} |
Elasticsearch ${{ matrix.elasticsearch_version_combinations.elasticsearch_version }} |
Kibana ${{ matrix.elasticsearch_version_combinations.kibana_version }}
run: ansible-test integration $ANSIBLE_TEST_OPTIONS -v --color --retry-on-error --python ${{ matrix.ansible_version_combinations.python_version }} --continue-on-error --diff --coverage ${{ matrix.elastic_module }}
env:
ANSIBLE_TEST_OPTIONS: "${{ matrix.elastic_module == 'elastic_keystore' && '--docker default' || '' }}"
- name: Upload Coverage data
run: tests/coverage.sh