All Projects → robertdebock → molecule-action

robertdebock / molecule-action

Licence: other
Test Ansible roles using Molecule

Molecule action

A GitHub action to tests 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 lint. 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@v2
        with:
          path: "${{ github.repository }}"
      - name: molecule
        uses: robertdebock/[email protected]

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@v2
        with:
          path: "${{ github.repository }}"
      - name: molecule
        uses: robertdebock/[email protected]
        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@v2
        with:
          path: "${{ github.repository }}"
      - name: molecule
        uses: robertdebock/[email protected]
        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/[email protected]
        with:
          image: ${{ matrix.config.image }}
          tag: ${{ matrix.config.tag }}
          command: "--debug test"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].