commit | 280bbe244543ecf9d7dcb549f77e4c83fc600dca | [log] [tgz] |
---|---|---|
author | ajurkowski <ajurkowski@google.com> | Wed Aug 19 11:26:20 2020 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Wed Aug 19 11:27:45 2020 -0700 |
tree | 407ea75788e64956676ed77111ed84bfa2886061 | |
parent | 238108f8a5e63c88e6041c66a422195834ea57c9 [diff] |
Add an archived representation for tree artifacts. Tree artifacts are currently passed as individual files which are in the directory. This change is a prototype which allows to pass those directories using a single archived file instead. Add a new option which, if enabled, assigns an archived representation to each of the tree artifacts. The representation is a single file, which contains all of the files in the artifact (zip archive). Those files are added in a directory using a reserved name (containing a `:`), therefore cannot clash with user-created files. Expand the TreeArtifactValue to enable storing the archived representation and update the inputs mapping code to include the archived file. Add handling for changes to the archived files in `FilesystemValueChecker` to ensure correctness in case of incremental builds, when the files get edited/deleted. Add explicit errors for use cases for which archived tree artifacts are not supported yet like inputs discovery, shared actions, action templates or discarding orphaned artifacts. Please note that this feature relies on spawn runners to create the artifact itself -- using it with one which does not support it will result with an error (missing tree artifact output). Add a new, parameterized category of tests for `FilesystemValueChecker` to cover handling of archived files. Improve reliability of `FilesystemValueChecker` by replacing the clock used to generate file `ctimes` for files with a `ManualClock` (previously `JavaClock`, using `System.currentTimeMillis()`). PiperOrigin-RevId: 327472179
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
Follow our tutorials:
See CONTRIBUTING.md