Skip to main content

GitHub Action: monorepo-random-controller

Monorepo random controller used for demo

Introduction

Monorepo pattern for CI/CD use this action as controller to detect list of applications, applications with changes. The GitHub action detects as applications directories from specified path and use random to separate them into changed and unchanged lists.

Usage

  name: Pull Request
on:
pull_request:
branches: [ 'main' ]
types: [opened, synchronize, reopened, closed, labeled, unlabeled]

jobs:
monorepo:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Monorepo controller
id: controller
uses: cloudposse/github-action-monorepo-random-controller@0.1.1
with:
dir: ./applications/

outputs:
applications: ${{ steps.controller.outputs.apps }}
changes: ${{ steps.controller.outputs.changes }}
no-changes: ${{ steps.controller.outputs.no-changes }}

ci:
runs-on: ubuntu-latest
needs: [monorepo]
if: ${{ needs.monorepo.outputs.applications != '[]' }}
strategy:
matrix:
application: ${{ fromJson(needs.monorepo.outputs.applications) }}
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Build
id: build
uses: cloudposse/github-action-docker-build-push@1.9.0
with:
registry: registry.hub.docker.com
organization: ${{ github.event.repository.owner.login }}
repository: ${{ github.event.repository.name }}/${{ matrix.application }}
workdir: ./applications/${{ matrix.application }}