Awesome
Molecule action
A GitHub action to test your Ansible role using Molecule.
Requirements
This action can work with Molecule scenarios that use the docker
driver.
This action expects the following (default Ansible role) structure:
.
├── defaults
│ └── main.yml
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── molecule
│ └── default
│ ├── molecule.yml
│ ├── playbook.yml
│ └── prepare.yml
├── requirements.yml
├── tasks
│ └── main.yml
├── tox.ini # OPTIONAL
└── vars
└── main.yml
If you are missing the molecule
directory, please have a look at this skeleton role or one of the many examples listed on my website.
When tox.ini
is found, tox is used to test the role. Tox will install all dependecies found in tox.ini
itself, meaning tox.ini
determines the version of molecule that is used.
Inputs
namespace
The Docker Hub namespace where the image is in. Default "robertdebock"
.
image
The image you want to run on. Default "fedora"
.
tag
The tag of the container image to use. Default "latest"
.
options
The options to pass to tox
. For example parallel
. Default ""
. (empty)
command
The molecule command to use. For example create
. Default "test"
.
scenario
The molecule scenario to run. Default "default"
Example usage
Here is a default configuration that tests your role on namespace: robertdebock
, image: fedora
, tag: latest
.
---
on:
- push
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: checkout
uses: actions/checkout@v3
with:
path: "${{ github.repository }}"
- name: molecule
uses: robertdebock/molecule-action@6.0.0
NOTE: the
checkout
action needs to place the file in${{ github.repository }}
in order for Molecule to find your role.
If you want to test your role against multiple distributions, you can use this pattern:
---
name: CI
on:
- push
jobs:
lint:
runs-on: ubuntu-20.04
steps:
- name: checkout
uses: actions/checkout@v3
with:
path: "${{ github.repository }}"
- name: molecule
uses: robertdebock/molecule-action@6.0.0
with:
command: lint
test:
needs:
- lint
runs-on: ubuntu-20.04
strategy:
matrix:
image:
- alpine
- amazonlinux
- debian
- centos
- fedora
- opensuse
- ubuntu
steps:
- name: checkout
uses: actions/checkout@v3
with:
path: "${{ github.repository }}"
- name: molecule
uses: robertdebock/molecule-action@6.0.0
with:
image: "${{ matrix.image }}"
options: parallel
scenario: my_specific_scenario
Debugging
You can enable Molecule debugging by using this pattern:
# Stuff omitted.
- name: molecule
uses: robertdebock/molecule-action@6.0.0
with:
image: ${{ matrix.config.image }}
tag: ${{ matrix.config.tag }}
command: "--debug test"