Skip to content

Test cache in docker build #7

Test cache in docker build

Test cache in docker build #7

---
name: Molecule Tests
on:
workflow_dispatch:
push:
branches:
- main
jobs:
hadolint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
# https://github.com/marketplace/actions/hadolint-action
- uses: hadolint/[email protected]
with:
recursive: true
dockerfile: Dockerfile
ignore: "DL3008,SC3009"
molecule:
runs-on: ubuntu-latest
needs: hadolint
outputs:
docker-jenkins: ${{ steps.molecule.outputs.docker-jenkins }}
docker-jenkins-agent: ${{ steps.molecule.outputs.docker-jenkins-agent }}
manual-jenkins: ${{ steps.molecule.outputs.manual-jenkins }}
manual-jenkins-agent: ${{ steps.molecule.outputs.manual-jenkins-agent }}
system-docker: ${{ steps.molecule.outputs.system-docker }}
system-nginx: ${{ steps.molecule.outputs.system-nginx }}
system-prepare: ${{ steps.molecule.outputs.system-prepare }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
# https://github.com/marketplace/actions/paths-changes-filter
- uses: dorny/paths-filter@v2
id: molecule
with:
filters: |
docker-jenkins:
- 'ansible/roles/docker-jenkins/**'
docker-jenkins-agent:
- 'ansible/roles/docker-jenkins-agent/**'
manual-jenkins:
- 'ansible/roles/manual-jenkins/**'
manual-jenkins-agent:
- 'ansible/roles/manual-jenkins-agent/**'
system-docker:
- 'ansible/roles/system-docker/**'
system-nginx:
- 'ansible/roles/system-nginx/**'
system-prepare:
- 'ansible/roles/system-prepare/**'
docker-jenkins:
needs: molecule
if: ${{ needs.molecule.outputs.docker-jenkins == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
docker-jenkins-matrix:
needs: docker-jenkins
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 2
matrix:
OS_FAMILY: [docker-suse, docker-redhat, docker-debian, docker-ubuntu]
env:
PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --no-cache-dir --upgrade pip
pip install -r requirements.txt
# https://github.com/marketplace/actions/free-disk-space-ubuntu
- name: Pre-cleaning system before molecule tests
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
- name: Run molecule tests when content changes in docker-jenkins role
env:
MOLECULE_PROFILE: ${{ matrix.OS_FAMILY }}
run: |
molecule --version
molecule test -s $MOLECULE_PROFILE
working-directory: ansible/roles/docker-jenkins
docker-jenkins-agent:
needs: molecule
if: ${{ needs.molecule.outputs.docker-jenkins-agent == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
docker-jenkins-agent-matrix:
needs: docker-jenkins-agent
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 2
matrix:
OS_FAMILY: [docker-suse, docker-redhat, docker-debian]
env:
PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install dependencies
run: |
python -m pip install --no-cache-dir --upgrade pip
pip install -r requirements.txt
- name: Pre-cleaning system before molecule tests
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
- name: Run molecule tests when content changes in docker-jenkins-agent role
env:
MOLECULE_PROFILE: ${{ matrix.OS_FAMILY }}
run: |
molecule --version
molecule test -s $MOLECULE_PROFILE
working-directory: ansible/roles/docker-jenkins-agent
manual-jenkins:
needs: molecule
if: ${{ needs.molecule.outputs.manual-jenkins == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
manual-jenkins-matrix:
needs: manual-jenkins
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 2
matrix:
OS_FAMILY: [docker-suse, docker-redhat, docker-debian, docker-ubuntu]
env:
PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --no-cache-dir --upgrade pip
pip install -r requirements.txt
- name: Run molecule tests when content changes in manual-jenkins role
env:
MOLECULE_PROFILE: ${{ matrix.OS_FAMILY }}
run: |
molecule --version
molecule test -s $MOLECULE_PROFILE
working-directory: ansible/roles/manual-jenkins
manual-jenkins-agent:
needs: molecule
if: ${{ needs.molecule.outputs.manual-jenkins-agent == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
manual-jenkins-agent-matrix:
needs: manual-jenkins-agent
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 2
matrix:
OS_FAMILY: [docker-suse, docker-redhat, docker-debian]
env:
PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --no-cache-dir --upgrade pip
pip install -r requirements.txt
- name: Run molecule tests when content changes in manual-jenkins-agent role
env:
MOLECULE_PROFILE: ${{ matrix.OS_FAMILY }}
run: |
molecule --version
molecule test -s $MOLECULE_PROFILE
working-directory: ansible/roles/manual-jenkins-agent
system-docker:
needs: molecule
if: ${{ needs.molecule.outputs.system-docker == 'true' }}
runs-on: ubuntu-latest
env:
PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --no-cache-dir --upgrade pip
pip install -r requirements.txt
- name: Run molecule tests when content changes in system-docker role
run: |
molecule --version
molecule test
working-directory: ansible/roles/system-docker
system-nginx:
needs: molecule
if: ${{ needs.molecule.outputs.system-nginx == 'true' }}
runs-on: ubuntu-latest
env:
PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --no-cache-dir --upgrade pip
pip install -r requirements.txt
- name: Run molecule tests when content changes in system-nginx role
run: |
molecule --version
molecule test
working-directory: ansible/roles/system-nginx
system-prepare:
needs: molecule
if: ${{ needs.molecule.outputs.system-prepare == 'true' }}
runs-on: ubuntu-latest
env:
PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --no-cache-dir --upgrade pip
pip install -r requirements.txt
- name: Run molecule tests when content changes in system-prepare role
run: |
molecule --version
molecule test
working-directory: ansible/roles/system-prepare
# -------------------------------------------------------------------------------------------------------------
# Это альтернативный вариант запуска тех же тестов с помощью Molecule, только всё представлено в виде одной Job:
# on:
# push:
# branches:
# - main
# jobs:
# molecule-tests:
# runs-on: ubuntu-latest
# env:
# PY_COLORS: 1
# ANSIBLE_FORCE_COLOR: 1
# steps:
# - name: Checkout repository
# uses: actions/checkout@v3
# - uses: hadolint/[email protected]
# with:
# recursive: true
# dockerfile: Dockerfile
# ignore: "DL3008,SC3009"
# - name: Set up Python 3.11
# uses: actions/setup-python@v4
# with:
# python-version: 3.11
# - name: Install dependencies
# run: |
# python -m pip install --no-cache-dir --upgrade pip
# pip install -r requirements.txt
# - name: Define modified files for roles in ansible directory
# uses: dorny/paths-filter@v2
# id: changes
# with:
# filters: |
# docker-jenkins:
# - 'ansible/roles/docker-jenkins/**'
# docker-jenkins-agent:
# - 'ansible/roles/docker-jenkins-agent/**'
# manual-jenkins:
# - 'ansible/roles/manual-jenkins/**'
# manual-jenkins-agent:
# - 'ansible/roles/manual-jenkins-agent/**'
# system-docker:
# - 'ansible/roles/system-docker/**'
# system-nginx:
# - 'ansible/roles/system-nginx/**'
# system-prepare:
# - 'ansible/roles/system-prepare/**'
# - name: Run molecule tests when content changes in docker-jenkins role
# if: steps.changes.outputs.docker-jenkins == 'true'
# run: |
# molecule --version
# molecule converge
# working-directory: ansible/roles/docker-jenkins
# - name: Run molecule tests when content changes in docker-jenkins-agent role
# if: steps.changes.outputs.docker-jenkins-agent == 'true'
# run: |
# molecule --version
# molecule test
# working-directory: ansible/roles/docker-jenkins-agent
# - name: Run molecule tests when content changes in manual-jenkins role
# if: steps.changes.outputs.manual-jenkins == 'true'
# run: |
# molecule --version
# molecule converge
# working-directory: ansible/roles/manual-jenkins
# - name: Run molecule tests when content changes in manual-jenkins-agent role
# if: steps.changes.outputs.manual-jenkins-agent == 'true'
# run: |
# molecule --version
# molecule test
# working-directory: ansible/roles/manual-jenkins-agent
# - name: Run molecule tests when content changes in system-docker role
# if: steps.changes.outputs.system-docker == 'true'
# run: |
# molecule --version
# molecule test
# working-directory: ansible/roles/system-docker
# - name: Run molecule tests when content changes in system-nginx role
# if: steps.changes.outputs.system-nginx == 'true'
# run: |
# molecule --version
# molecule test
# working-directory: ansible/roles/system-nginx
# - name: Run molecule tests when content changes in system-prepare role
# if: steps.changes.outputs.system-prepare == 'true'
# run: |
# molecule --version
# molecule test
# working-directory: ansible/roles/system-prepare