CI/CD usage example
This documentation is an example of usage of Monkeyble in a CI/CD.
Create an Ansible execution environment
Create a Ansible execution environment that contains Monkeyble CLI and collections.
Example of execution-environment.yml
:
version: 1
dependencies:
galaxy: requirements.yml # place here your required Ansible role and collections
python: requirements.txt # place here your required python libraries
system: bindep.txt # place here your required system packages
ansible_config: 'ansible.cfg'
additional_build_steps:
prepend: |
RUN pip3 install --upgrade pip setuptools
In the requirements.txt
we should retrieve a line with the Monkeyble cli package. E.g:
monkeyble==1.2.0 # check he last version before placing it here
In the requirements.yml
we should retrieve a line with the Monkeyble collection. E.g:
collections:
- name: hpe.monkeyble
version: 1.2.0 # check the last version before placing it here
Build the execution environment:
ansible-builder build --verbosity 3 \
--tag my_registry.example/repo/execution-environment-ansible \
--container-runtime docker
You can test locally the image against your repository
docker run -it --rm \
-v ${PWD}:/runner/project/ \
-v /path/to/inventory_folder:/runner/inventory/ \
-e ANSIBLE_CONFIG='monkeyble-ci.cfg' \
-w /runner/project/ \
my_registry.example/repo/execution-environment-ansible \
monkeyble test
CI/CD example
Github action
Here is a workflow example based on the built execution environment
name: On pull request
on: [pull_request] # set to this value when pushing in prod
jobs:
monkeyble-tests:
runs-on: self-hosted
steps:
- name: Checkout the Ansible repo
uses: actions/checkout@v3
- name: Run Monkeyble tests
run: |
docker run --rm \
-v ${PWD}:/runner/project/ \
-v ${PWD}/inventories:/runner/inventory/ \
-e ANSIBLE_CONFIG='monkeyble-ci.cfg' \
-e VAULT_GITHUB_TOKEN=$VAULT_GITHUB_TOKEN \
-w /runner/project/ \
my_registry.example/repo/execution-environment-ansible \
monkeyble test