Releases: moonrepo/moon
Releases · moonrepo/moon
v1.31.1
v1.31.0
💥 Breaking
- We've updated the task inheritance order to better reflect specificity. The biggest changes are
that deno/node/bun are now a higher priority than javascript/typescript, and stack is the lowest
priority. This should only affect users with very complex inheritance chains.
🚀 Updates
- We are deprecating the concept of the "platform", as this is required for the next step in
supporting WASM based toolchain plugins. Going forward, any reference to platform is now a
toolchain. The following changes have been made:- Deprecated the top-level
platform
setting inmoon.yml
, usetoolchain.default
instead.- Additionally, the toolchain can now be inferred from the top-level
language
setting and any
config files in the project/workspace root. This pattern is preferred when possible.
- Additionally, the toolchain can now be inferred from the top-level
- Deprecated the
platform
task setting, usetoolchain
instead. - Deprecated the
taskPlatform
query field, usetaskToolchain
instead. - Deprecated the
--platform
option formoon query tasks
, use--toolchain
instead. - Deprecated the
$taskPlatform
token, use$taskToolchain
instead.
- Deprecated the top-level
- Added the ability to run targets in
moon run
andmoon ci
using a glob-like syntax.- For example:
:build-*
,app-*:build
,#tag-{foo,bar}:build
, etc.
- For example:
- Added a
--no-bail
flag tomoon run
, that will continue running tasks even when a task fails. - Added glob support (and
glob://
) togenerator.templates
in.moon/workspace.yml
, allowing you
to glob for your codegen template locations. - Added a task option
inferInputs
, that will automatically infer inputs based on file groups and
substituted environment variables used within the task. - Updated task option
runInCI
to support the values "always" (always run) and "affected" (only run
if affected, same astrue
). - Updated task inputs to automatically be inherited from file group token functions used within the
task'sscript
,command
,args
, orenv
. - Updated the
extends
setting in.moon/workspace.yml
,toolchain.yml
, andtasks.yml
, to
support a list of files/URLs to extend. - Updated our unstable remote service (Bazel RE API) with new functionality:
- Added an
unstable_remote.cache.compression
setting, which can be set tozstd
to enable
zstandard compression on output blobs. - Symlink based outputs will now be created as symlinks on Windows, where previously they were
copies. Do note that symlinks require privileged access on Windows to function correctly.
- Added an
- Updated the
moon templates
command:- Templates are now sorted by identifier.
- Added a
--filter
option to filter the templates list by ID.
- Updated toolchain dependency installs to retry up to 3 attempts if the install command fails.
- Improved the task output prefixing logic.
🐞 Fixes
- Fixed a panic that could occur during command argument parsing.
- Fixed an issue where remote cached blobs would sometimes fail to be created locally.
- Fixed an issue when
ctrl+c
ing multiple persistent tasks would sometimes leave them running in
the background.
⚙️ Internal
- Updated proto to v0.44.2 (from 0.44.1).
- Updated dependencies.
v1.30.6
🐞 Fixes
- Fixed an issue where
python venv
would fail to find an applicable Python version. - Fixed an issue with PowerShell Git hooks not bubbling up exit codes of failed commands.
- Fixed an issue where Git submodules/worktrees would point to the wrong hooks folder.
⚙️ Internal
- Updated proto to v0.44.1 (from 0.43.1).
v1.30.5
🐞 Fixes
- Fixed Python virtual env bin path not being available for tasks when
python.version
is not
defined.
⚙️ Internal
- Updated proto to v0.43.1 (from 0.43.0).
- Updated dependencies.
v1.30.4
🐞 Fixes
- Fixed
moon ci
showing incorrect job related logs. - Fixed some issues with the Python toolchain:
- pip is no longer required to be enabled to activate a virtual environment.
- Changed
python.rootRequirementsOnly
tofalse
by default. - The venv root is now the location of a found
requirements.txt
, otherwise the package root, or
workspace root ifpython.rootRequirementsOnly
is enabled. - Tasks will now inherit the correct venv paths in
PATH
.
v1.30.3
🐞 Fixes
- Fixed an issue where a task with explicit no inputs (
inputs: []
) would always be marked as affected.
⚙️ Internal
- Updated proto to v0.43.0 (from 0.42.2).
- Updated wasmtime to v26 (from v23).
- Updated Rust to v1.83.
v1.30.2
🐞 Fixes
- Fixed an issue where dependencies/dependents of an affected task would be skipped in the action
graph if they were also not affected. - Fixed a potential cycle (stack overflow) that may occur in the affected tracker.
⚙️ Internal
- Improved task dependent resolution in the action graph.
v1.30.1
🐞 Fixes
- Fixed a Git "fatal: bad object" error when submodules are in being used.
- Fixed an issue where
moon ci
would trigger a shallow checkout error, even when a base revision
is provided. - Fixed an issue were changes in a non-direct dependency would not mark a deep dependent as
affected.
v1.30.0
💥 Breaking
- If you renamed a project using the
id
setting inmoon.yml
, you can no longer reference that
project in dependencies and targets using its original ID. - Refactored the
moon query tasks
command.- CLI options have been replaced with new task based options, instead of being project based.
- Now utilizes the new task graph and affected tracker.
- The
moon project-graph --json
output no longer includes task data (thetasks
field is an empty
map).- Use
moon task-graph
to access this data, and piece things together using the project
taskTargets
field. - The
moon project --json
output pieces everything together automatically.
- Use
🚀 Updates
- Added unstable support for self-hosted remote caches, powered by the
Bazel Remote Execution API.- Allows for 3rd-party implementations like
bazel-remote
to be used. - Currently supports the gRPC protocol, and will support HTTP in a later release.
- Our moonbase product will be sunset in the future.
- Allows for 3rd-party implementations like
- Added Python tier 2 and 3 support.
- Will download and install Python into the toolchain when a
version
is configured. - Will parse the
requirements.txt
to resolve and install dependencies. - Added a
python
setting to.moon/toolchain.yml
. - Added a
toolchain.python
setting tomoon.yml
. - Updated
moon bin
commands to support Python.
- Will download and install Python into the toolchain when a
- Added a new task graph, that enables new granular based functionality for task related features.
- Added a new
moon task-graph
command. - Can now control the depth of upstream (dependencies) and downstream (dependents).
- Affected information now tracks based on dependent graph connections.
- Added
--upstream
and--downstream
options tomoon query tasks
.
- Added a new
- Added basic support for Git submodules, and will now extract touched files from all submodules.
- Added 7 new token variables:
$arch
,$os
,$osFamily
,$vcsBranch
,$vcsRepository
,
$vcsRevision
,$workingDir
- Added a
rust.binstallVersion
setting to.moon/toolchain.yml
. - Updated Pkl configurations to support
read()
for environment variables. - Resolved the
strictProjectIds
experiment and you can no longer reference the original ID. - Resolved the
disallowRunInCiMismatch
experiment and you can no longer have a CI based task
depend on a non-CI based task.
🐞 Fixes
- Fixed
moon project-graph <id>
not including all dependencies/dependents. It was only showing
direct relationships. - Fixed an issue where touched file paths would include Git submodule directories and trigger hasher warnings.
⚙️ Internal
- Updated dependencies.
- Updated proto to v0.42.2 (from 0.42.0).
v1.29.4
🚀 Updates
- Added an
experiments.strictProjectIds
setting to.moon/workspace.yml
. When enabled, will
disallow using original IDs for renamed projects (via theid
setting) when building the project
graph. - Updated codegen/template
destination
to be relative from the workspace root if prefixed with
/
, otherwise the current working directory.
🐞 Fixes
- Fixed an issue where moon would attempt to execute a folder if it has the same name as the current
shell. - Fixed an issue where
[working_dir]
and[workspace_root]
variables were not working in the
template.yml
destination
setting.
⚙️ Internal
- Updated dependencies.
- Updated proto to v0.42.0 (from 0.41.3).