mono_repo 3.4.0 mono_repo: ^3.4.0 copied to clipboard
CLI tools to make it easier to manage a single source repository containing multiple Dart packages.
3.4.0 #
- Configuring the target Dart SDK:
- Allow specifying specific
dev
releases. - Allow specifying just
beta
.
- Allow specifying specific
- Shorten the generated names for a job if a given component of the name is identical for all tasks. Makes it easier to read the names in the GitHub Action UI.
GitHub Actions #
- Stop using
tool/ci.sh
. It won't be created when using only GitHub Actions. - Detect running on Windows on GitHub without setting an extra environment variable.
- Separate job commands into a step for each. This makes it easier to see exactly what commands were ran on what packages, as well as their individual status and output.
3.3.0 #
- Implemented proper support for
stages
in github actions. Jobs will now be dependent on previous stages jobs. Conditional stages are also supported in the same manner as travis was, see the README.md for more details.
3.2.0 #
- Added support for
on_completion
jobs in github configuration, see theREADME.md
for details. This allows you to configure things like webhooks after failed builds, or publishing after successful builds.
3.1.0 #
- Added support for GitHub Actions.
See
README.md
for details. - Added the
generate
command, since we know support more than one CI provider.- Deprecated the
travis
command.
- Deprecated the
- Small improvement to how some strings are emitted in Yaml.
3.0.0 #
mono_repo.yaml
:- NEW! Added support for
pub_action
value. Can be one ofget
orupgrade
(default) to change the package request behavior in each action. - NEW! Added support for
pretty_ansi
value. The default istrue
. Set tofalse
to have the generated shell script skip any ANSI formatting. - UPDATED
self_validate
can now be eithertrue
or a String value that maps to the desired stage where validation should run.
- NEW! Added support for
travis
command:- Many improvements to the generated
tool/travis.sh
file- Clearly denote when terminating a job due to incorrect usage or configuration.
- Clearly mark the end of each task and if it succeeded or failed.
- Print a summary at the end of the tasks for each package to make it easier to find and fix failures.
- BREAKING Removed
--use-get
command-line flag. Usepub_action
setting inmono_repo.yaml
instead. - BREAKING Removed
--pretty-ansi
command-line flag. Usepretty_ansi
setting inmono_repo.yaml
instead. - Simplified generated configuration for
self_validate
. 'tool/mono_repo_self_validate.sh' is no longer created or used. When upgrading fromv2.5.0
, you can delete this file.
- Many improvements to the generated
2.5.0 #
- Provide a better error when parsing a poorly formatted Yaml file.
mono_repo.yaml
:- NEW! Added support for
self_validate
boolean value. Iftrue
, creates a shell script and associated task to install the same version ofmono_repo
during CI and runmono_repo travis --validate
to ensure all files are up-to-date. - Respect the ordering of
stages
, if configured. - Allow
stages
values to be just a string – allows defining an explicit ordering of stages.
- NEW! Added support for
mono_pkg.yaml
:- Task
command
entry: correctly handle aList
containing strings.
- Task
2.4.0 #
- Adds a
--validate
option to thetravis
command.-
You can configure this to run from any of your
mono_pkg.yaml
files using a command job like this:command: "cd ../ && pub global run mono_repo travis --validate"
. -
We may make this easier to configure in the future.
-
- Require Dart SDK
>=2.7.0 <3.0.0
.
2.3.0 #
- Add support for
os
configuration.- This generally works in the same way as the
dart
sdk option, except that it is not required. - The default is to only run on
linux
. - Supports a top-level
os
list inmono_pkg.yaml
files. - Supports overriding the
os
per task.
- This generally works in the same way as the
2.2.0 #
- Fix issue where
pub
command failing for one package stops test run for other packages grouped into the same Travis task. - Use
flutter packages
forpub
command on packages that depend on Flutter. - Any arguments given to
dartfmt
Travis tasks are used instead of the default-n --set-exit-if-changed .
.- To maintain previous behavior,
dartfmt: sdk
is a special case and still triggers the default arguments.
- To maintain previous behavior,
- Add
--use-get
optional flag for thetravis
command to usepub get
instead ofpub upgrade
in the generated script.
2.1.0 #
- Require Dart SDK
>=2.2.0 <3.0.0
.
mono_repo travis
- Job entries in
.travis.yml
are now ordered. This may cause churn, but will create a predictable output going forward. - While running, print the package when starting each task. Makes it easy to scan results when a job has multiple packages.
- Warns if a job specifies a target Dart SDK that is not supported in the
corresponding
pubspec.yaml
.
mono_repo pub
- Added support for all
pub
flags.
2.0.0 #
- BREAKING All commands are recursive by default. To go back to the shallow
mode, use
--no-recursive
. - Improve style of the generated
tool/travis.sh
script, including fast-failing if thePKG
variable does not map to an existing directory. - Require at least Dart 2.1.0.
- The
dart
key is no longer required inmono_pkg.yaml
if all stages specify their own values. A warning is printed if values are provided but not used. - All output during execution will be sent to STDOUT (instead of STDERR).
1.2.2 #
- Updated dependencies.
1.2.1 #
- Fix issue running with Dart 2.0.
1.2.0 #
- Add
--version
to executable. - Include the version of the package in generated files.
- Support customizing Travis-CI
branches
inmono_repo.yaml
.
1.1.0 #
- Improve presubmit command output to list the full command for each task instead of the name of the task type only.
1.0.0 #
- Add support for configuring top-level Travis options via
mono_repo.yaml
.
BREAKING CHANGES
-
The root
mono_config.yaml
file is no longer used to configure which packages are configured. Instead,mono_pkg.yaml
is required to be in each target package directory. A package is considered published if it has a value forversion
inpubspec.yaml
. -
The package configuration file is now
mono_pkg.yaml
. If a legacy config file –.mono_repo.yml
– is found, the command is canceled and a warning is printed telling the user to rename the file. -
Removed the
init
command.
0.3.3 #
- Support adding custom cache directories in each project.
- Add custom names for travis jobs based on the actual tasks being ran, as well
as the sdk and subdirectory. The job description portion is configurable with
the new
description
key for jobs within a stage, for example:
stages:
- unit_test:
- description: "chrome"
test: -p chrome
0.3.2+1 #
- Support Dart 2 stable.
0.3.2 #
- Support dependencies that specify an SDK – common with Flutter.
- Require at least Dart 2.0.0-dev.54.
pub
command now runs with inherited standard IO. You now see colors!- Improved error output with bad configuration.
0.3.1 #
New Features #
-
Added support for the
group
task, which accepts a list of tasks using the normal format. This can be used to group multiple tasks in a single travis job. All tasks will be ran, but if any of them fail then the whole job will fail.Example usage combining the analyzer/dartfmt tasks:
stages:
- analyze_and_format:
- group:
- dartanalyzer
- dartfmt
0.3.0 #
Breaking Changes #
- Sub-package
.travis.yml
files should be replaced with.mono_repo.yml
files, which are a simplified format that supports travis build stages. A basic example file might look like this:
# List of the sdk versions you support
dart:
- dev
- stable
# Ordered list of all stages you want to run.
stages:
# A single stage, called `analyze_and_format` which runs the analyzer and
# the formatter only.
- analyze_and_format:
- dartanalyzer: --hints-as-warnings .
- dartfmt: sdk
dart:
- dev # Overrides the top level sdk default
# Assuming everything analyzed correctly, runs a build.
- build:
- command: "pub run build_runner build"
# And finally run tests, these are custom build_runner tests but the regular
# `test` task is also supported.
- unit_test:
- command: "pub run build_runner test"
- command: "pub run build_runner test -- -p chrome"
0.2.2 #
-
travis
command-
Make numbering more consistent and clean when there is more than one task with a given name.
-
Print out the full command that executed as part of a task.
-
Support a
List
value forbefore_script
.
-
0.2.1 #
-
travis
command-
Write ANSI escape sequences in
tool/travis.sh
as pre-escaped ASCII literals. -
Added
--[no-]pretty-ansi
flag to allow ANSI sequences to be optionally omitted.
-
0.2.0 #
-
Add
before_script
support to thetravis
command. When that value is set in atravis.yml
file, we will call the script before running any of the tasks for that package. -
Add
recursive
global flag. When set, we will walk all sub-directories looking forpubspec.yaml
files. -
Support git dependencies in packages.
-
Use
mono_repo.yaml
as the configuration file name, instead ofpackages.yaml
.
0.1.0 #
- Initial release.