Releases: moonrepo/moon
Releases · moonrepo/moon
v1.35.4
🚀 Updates
- Updated remote caching to error if an output file is a symlink to a file outside of the workspace.
🐞 Fixes
- Fixed an issue with priority tasks where dependencies of the task may sometimes not run in the
correct order in the pipeline. - Fixed an issue where task
affectedFilesandrunFromWorkspaceRootwould pass invalid relative
file paths. - Fixed an issue where running tasks for custom plugins would trigger a panic.
v1.35.3
🚀 Updates
- Updated remote uploads/downloads to abort when receiving a ctrl+c.
🐞 Fixes
- Fixed an issue where interrupting (ctrl+c) a task that exits with a 0 code would treat is as
succesful, resulting in an invalid cache.
v1.35.2
🚀 Updates
- Improved bare repository support for Git v2.
- Updated
moon cito support passing touched files via stdin.
🐞 Fixes
- Fixed the faster/new glob implementation not filtering out hidden directories. This should now
work like the old implementation. - Fixed the new Git v2 not working correctly for synced hooks and worktrees.
v1.35.1
🚀 Updates
- Added locks to workspace graph building to avoid duplicate graphs.
- Enabled TCP keep alive for remote service connections.
- Tweaked the remote cache file size threshold.
🐞 Fixes
- Fixed a scenario where task outputs would be partially hydrated from remote cache.
v1.35.0
🚀 Updates
- Rewrote the action graph to support plugins. The following changes have been made.
- Is now async compatible. In the future, we'll update it to also support concurrency, so that the
graph can be built in parallel across threads. - Reduced the amount of edges (relationships) being created between nodes (actions).
- Added a new
InstallDependenciesaction for WASM plugins.- The dependencies root is now dynamically located by traversing the file system, unlike the
previous implementation that assumed everything was in the workspace root.
- The dependencies root is now dynamically located by traversing the file system, unlike the
- Added a new
SetupEnvironmentaction for WASM plugins.- This runs after
SetupToolchainbut beforeInstallDependencies. - Can be used to setup the workspace or project environment. For example, initializing Python
venv, or making manifest/lockfile changes.
- This runs after
- Updated
RunTaskto setup toolchains and install dependencies for eachtoolchainthat has
been configured, instead of just the 1st one (work in progress). - Updated
SyncProjectto no longer depend onSetupToolchain, and not be grouped by
language/toolchain, and instead encompass all of them applicable to the project.
- Is now async compatible. In the future, we'll update it to also support concurrency, so that the
- Added a new task option,
cacheKey, which can be used to seed the hash, and invalidate local and
remote caches. - Added a new task option,
priority, that controls the position in the pipeline queue.- Supports
critical,high,normal(default), orlow.
- Supports
- Added a
--log=verboselevel, which includes span information on top of the trace level. - Added a light terminal theme. Can be enabled with
--theme=lightorMOON_THEME=light.- This is still a work in progress. Open to feedback on color/contrast choices.
- Added 2 new webhooks,
toolchain.installingandtoolchain.installed, which emit when a
toolchain WASM plugin is installing a tool (via proto). - Enabled the
experiments.fasterGlobWalkandexperiments.gitV2experiments.
🧩 Plugins
- Added tier 3 support (tier 2 still a work in progress).
- This utilizes the same APIs as proto: https://moonrepo.dev/docs/proto/wasm-plugin
- Added new toolchain WASM APIs.
locate_dependencies_root- Locates the dependencies root (workspace).setup_environment- Runs operations to setup an environment for a project/workspace before
installing dependencies and running tasks.install_dependencies- Defines commands to install/dedupe dependencies.setup_toolchain- Runs operations after the tool has been installed.teardown_toolchain- Runs operations before the tool will be uninstalled.
🐞 Fixes
- Fixed the error handling of remote service uploads and downloads.
- Fixed a timed out task displaying a generic and unhelpful error message.
⚙️ Internal
- Linux binaries are now built on Ubuntu v22 instead of v20.
- Rewrote our testing utilities and updated all tests.
- Updated proto to v0.47.11 (from 0.47.7).
- Updated Rust to v1.86.0.
v1.34.3
🐞 Fixes
- Attempted fix for the "plugin typescript already exists" error.
- Fixed an issue where negated glob task
inputswouldn't filter the file list when hashing.
⚙️ Internal
- Updated dependencies.
v1.34.2
🚀 Updates
- Minor change to remote caching up/download batching to increase performance.
- Reworked remote caching error handling.
🐞 Fixes
- Fixed an issue where remote caching would fail to upload multiple blobs if the sum of their sizes
exceed the max upload size. - Fixed an issue where the same plugin could be loaded multiple times.
- Fixed an issue when parsing config/template files that contain a byte-order mark (BOM).
⚙️ Internal
- Updated dependencies.
v1.34.1
🐞 Fixes
- Fixed a compilation error when moon is installed through Cargo.
- Fixed the version missing in
--versionand--help. - Fixed text wrapping issues when rendering tables in the terminal.
v1.34.0
💥 Breaking
- We have sunset our moonbase service and removed its integration from
moon. If you were using moonbase's remote caching, we suggest using
Depot or self-hosting instead.
🚀 Updates
- Integrated a new console rendering system with new terminal styles, prompts, and output.
- Updated all applicable commands.
- Updated
moon templatesto render a list of data. - Updated
moon query projectsandmoon query tasksto render a table of data.
- Added new settings to
pipeline(formerlyrunner) in.moon/workspace.ymlto control which
kinds of action nodes exist in the action graph when running tasks.syncWorkspacesetting toggles the rootSyncWorkspaceaction.syncProjectssetting toggles theSyncProjectactions, and can be scoped to project IDs.syncProjectDependenciessetting toggles whether to recursively linkSyncProjectactions
based on project dependencies.installDependenciessetting toggles theInstallWorkspaceDepsandInstallProjectDeps
actions, and can be scoped to toolchain IDs.
- Added an
experiments.fasterGlobWalksetting to.moon/workspace.yml, that will use a better
glob walker implementation. Do note that this is experimental and may be buggy!- In our benchmarks, it's on average 1.5-2x faster.
- We also attempt to cache the results, which occurs quite often when running tasks.
- Globs are now logged to better debug performance issues.
- Added an
experiments.gitv2setting to.moon/workspace.yml, that uses a new Git implementation.- Has better support for submodules, subtrees, and worktrees.
- Parallelizes processes when applicable.
- Covers edge cases the v1 implementation did not support.
- Added a
--no-actionsflag tomoon run, that will run the task without including the other
actions, likeSyncProject,SetupToolchain, etc. - Added a
--jsonflag tomoon templates. - Deprecated the
pipeline.archivableTargetssetting. All tasks are now automatically cached if
using Bazel Remote Caching. - Improved the performance of environment variable substitution.
- Improved toolchain plugin loading to be on-demand.
- Improved sync cache invalidation for codeowners, config schemas, and VCS hooks.
- Updated
moon docker fileto inherit the default Docker image from any applicable toolchain
plugins. - Updated
moon syncto no longer be deprecated, and instead sync the workspace and all projects. - WASM API
- Added
DefineDockerMetadataOutput.default_imagefield. - Added
SettingPrompt.descriptionfield.
- Added
⚙️ Internal
- Updated Rust to v1.85.1.
- Updated dependencies.