Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Question / Guidance: MinIO Implementation

未关闭
#108 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
功能
描述清晰度
需要澄清
活跃度
停滞
技术栈
csharp
领域
backend, cloud

调研方向

首先,将提议的 MSBuildCacheMinioStoragePlugin.cs 与 AzureBlobStorage 实现进行比较,并检查 BuildXL 的 ICacheClient、IContentStore、IContentSession、IMetadataStore、IPublishingStore 及相关接口。确定实际需要哪些 MinIO 缓存组件,然后记录已确定的实现范围和测试方案。

由索引模型根据 Issue 内容生成。

描述

After reading more about MSBuildCache and BuildXL I wanted to ask a few questions to see if implementing MinIO as a cache is feasible and at what level it should be implemented.

  • Is the expectation of this repository to hide the internals of BuildXL? The reason I ask is BuildXL seems to be on GitHub but has a decent amount of internal vs public stuff going on. Not clear to me if extending functionality from that repository is recommended.
  • If it is recommended to extend functionality from that repository any guidance on a Minio approach? This is what I've currently got in my notes so far:
    • Use AzureBlobStorage as an example.
    • Careful of classes that seem generic but have Azure specific functionality. May not be able to re-use as much as initially hoped.
    • Create MSBuildCacheMinioStoragePlugin.cs
    • MSBuildCacheMinioStoragePlugin.cs will implement CreateCacheClientAsync that returns a CasCacheClient to satisfy ICacheClient requirement.
    • The CasCacheClient expects a local cache and remote cache. The local cache is already handled. The remote cache must be a Minio compatible remote cache implementation.
    • To create a Minio compatible remote cache client we must implement:
      • MinioContentStore to satisfy IContentStore requirement.
      • MinioContentSession to satisfy IContentSession requirement.
      • MinioContentStore and MinioContentSession will be injected into OneLevelCache and "just work" given those new Minio classes are implemented correctly.
      • MinioMetadataStore to satisfy IMetadataStore requirement.
      • MinioMetadataStore will be injected into MetadataStoreMemoizationDatabase. DatabaseMemoizationStore will "just work" given new Minio classes are implemented correctly.
      • IPublishingStore and IPublishingSession looks like they need to be implemented but ran out of time during investigation. Look later to determine requirements.
      • IBlobCacheTopology does not seem required but might want to mimic flow anyways to keep things the same.
    • Overall very involved. Overhead of learning BuildXL is very high. Testing / debuggability also seems difficult.

Does everything around BuildXL and having to extend that sound correct if we want a Minio / S3 implementation? Am I overstating or understating how involved this is?

Any guidance would be appreciated!

主要语言
C#
星标
64
派生
24
平均合并
1 天 14 小时
30 天内合并 PR
2

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/MSBuildCache 的其他 Issue

查看 microsoft/MSBuildCache 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。