flutter_monorepo_build_tools 1.0.0 flutter_monorepo_build_tools: ^1.0.0 copied to clipboard
A set of command-line tools to help automate common monorepo tasks.
Flutter Monorepo Build Tools #
Usage #
flutter pub get flutter_monorepo_build_tools
nano monorepo.yaml
- see
monorepo.sample.yaml
for an example of how to configure
- see
flutter run monorepo_build_tool
Config #
The Monorepo Build Tool is designed to be as configurable as is reasonably possible. Configuration options are broadly divisible into two categories: Local Options, which define the behavior of the tool locally e.g. sourcing files, helping to describe the structure of your file system, etc; and CI options, which define values specific to whichever CI you are using.
OOTB CI Support #
At release, FMBT only contains out-of-the-box support for CircleCI using the path-filtering
approach.
To configure your monorepo:
- Create a source folder to contain your raw CircleCI config. This should include one
config.yml
file and as manycontinue-config.yml
type files as you wish. config.yml
should look something like this:
version: 2.1
# this allows you to use CircleCI's dynamic configuration feature
setup: true
# the path-filtering orb is required to continue a pipeline based on
# the path of an updated fileset
orbs:
path-filtering: circleci/path-filtering@0.1.1
workflows:
# the always-run workflow is always triggered, regardless of the pipeline parameters.
always-run:
jobs:
# the path-filtering/filter job determines which pipeline
# parameters to update.
- path-filtering/filter:
name: check-updated-files
# the mapping key will be automatically generated by flutter_monorepo_build_tools
base-revision: master
# this is the path of the configuration we should trigger once
# path filtering and pipeline parameter value updates are
# complete.
config-path: .circleci/continue-config.yml
- Create however many
continue-config.yml
type files you need for your use case. It is important when naming jobs that they contain the name of your entrypoint directory. For example, if your job is related to an appapp
, it should be named something likeapp_deploy
. For a full list of matching globs, seeentrypointPermutations
incircle_ci_update_manager.dart
.