diff options
| author | Dan Engelbrecht <[email protected]> | 2026-01-27 14:53:37 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-01-27 14:53:37 +0100 |
| commit | 16a4ce30ef1a4461ea39f1b821974ed01b80cd1f (patch) | |
| tree | 8305ea81771c3e7793bd0f84f7bb3cd5a68be66a /src/zenremotestore/include | |
| parent | avoid big ioworker backlog (#733) (diff) | |
| download | zen-16a4ce30ef1a4461ea39f1b821974ed01b80cd1f.tar.xz zen-16a4ce30ef1a4461ea39f1b821974ed01b80cd1f.zip | |
allow download specification for zen builds download (#734)
- Feature: `zen builds download` now supports `--download-spec-path` to determine what content to download from a build
- The unstructured format expects one line per file relative to the root with '/' as a path delimiter
- The structured format uses JSon format and the `--download-spec-path` must have extension `.json` to enable structured input
{
"parts": {
"default" : {
"files": [
"foo/bar",
"baz.exe"
]
},
"symbols": {
"files": [
"baz.pdb"
]
}
}
}
Diffstat (limited to 'src/zenremotestore/include')
| -rw-r--r-- | src/zenremotestore/include/zenremotestore/builds/buildmanifest.h | 27 | ||||
| -rw-r--r-- | src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h | 16 |
2 files changed, 30 insertions, 13 deletions
diff --git a/src/zenremotestore/include/zenremotestore/builds/buildmanifest.h b/src/zenremotestore/include/zenremotestore/builds/buildmanifest.h new file mode 100644 index 000000000..a0d9a7691 --- /dev/null +++ b/src/zenremotestore/include/zenremotestore/builds/buildmanifest.h @@ -0,0 +1,27 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include <zencore/filesystem.h> +#include <zencore/uid.h> + +namespace zen { + +struct BuildManifest +{ + struct Part + { + Oid PartId = Oid::Zero; + std::string PartName; + std::vector<std::filesystem::path> Files; + }; + std::vector<Part> Parts; +}; + +BuildManifest ParseBuildManifest(const std::filesystem::path& ManifestPath); + +#if ZEN_WITH_TESTS +void buildmanifest_forcelink(); +#endif // ZEN_WITH_TESTS + +} // namespace zen diff --git a/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h b/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h index 9f7d93398..47f402e15 100644 --- a/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h +++ b/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h @@ -577,17 +577,6 @@ private: PrepareBuildResult PrepareBuild(); - struct PartManifest - { - struct Part - { - Oid PartId; - std::string PartName; - std::vector<std::filesystem::path> Files; - }; - std::vector<Part> Parts; - }; - struct UploadPart { Oid PartId = Oid::Zero; @@ -600,8 +589,6 @@ private: std::vector<BuildsOperationUploadFolder::UploadPart> ReadFolder(); std::vector<UploadPart> ReadManifestParts(const std::filesystem::path& ManifestPath); - PartManifest ParseManifest(const std::filesystem::path& Path, const std::filesystem::path& ManifestPath); - bool IsAcceptedFolder(const std::string_view& RelativePath) const; bool IsAcceptedFile(const std::string_view& RelativePath) const; @@ -811,10 +798,13 @@ std::vector<std::pair<Oid, std::string>> ResolveBuildPartNames(CbObjectView std::span<const std::string> BuildPartNames, std::uint64_t& OutPreferredMultipartChunkSize); +struct BuildManifest; + ChunkedFolderContent GetRemoteContent(OperationLogOutput& Output, StorageInstance& Storage, const Oid& BuildId, const std::vector<std::pair<Oid, std::string>>& BuildParts, + const BuildManifest& Manifest, std::span<const std::string> IncludeWildcards, std::span<const std::string> ExcludeWildcards, std::unique_ptr<ChunkingController>& OutChunkController, |