# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
---
name: Molecule - FO

on:
  create:
  push:
    paths:
      - .github/workflows/ansible.molecule.fo.yml
      - infrastructure/ansible/roles/molecule_shared/**
      - infrastructure/ansible/roles/fakeOrigin/**
  pull_request:
    paths:
      - .github/workflows/ansible.molecule.fo.yml
      - infrastructure/ansible/roles/molecule_shared/**
      - infrastructure/ansible/roles/fakeOrigin/**
    types: [opened, reopened, ready_for_review, synchronize]

jobs:
  lint:
    name: Lint
    runs-on: ubuntu-latest

    steps:
      - name: Check out the codebase.
        uses: actions/checkout@v2

      - name: Set up Python 3.
        uses: actions/setup-python@v2
        with:
          python-version: '3.x'

      - name: Install test dependencies.
        run: pip3 install ansible molecule[docker] yamllint ansible-lint jmespath

      - name: Run Molecule tests.
        run: molecule --debug -vvvvv lint
        env:
          PY_COLORS: '1'
          ANSIBLE_FORCE_COLOR: '1'
          MOLECULE_DISTRO: 'centos8'
        working-directory: ${{ github.workspace }}/infrastructure/ansible/roles/fakeOrigin

  verify:
    name: Verify
    runs-on: ubuntu-latest
    strategy:
      matrix:
        distro:
          - centos8
          - centos7
        scenario:
          - default

    steps:
      - name: Check out the codebase.
        uses: actions/checkout@v2

      - name: Set up Python 3.
        uses: actions/setup-python@v2
        with:
          python-version: '3.x'

      - name: Install test dependencies.
        run: pip3 install ansible molecule[docker] yamllint ansible-lint jmespath

      - name: Run Molecule tests.
        run: molecule --debug -vvvvv converge && molecule --debug -vvvvv verify
        env:
          PY_COLORS: '1'
          ANSIBLE_FORCE_COLOR: '1'
          MOLECULE_DISTRO: ${{ matrix.distro }}
          MOLECULE_SCENARIO_NAME: ${{ matrix.scenario }}
        working-directory: ${{ github.workspace }}/infrastructure/ansible/roles/fakeOrigin
