问题描述
正在寻找一个二进制制品库,但他发现所有的选择都非常复杂,无论是设置、使用还是管理都很麻烦。他只是希望能够实现以下功能:
– 上传带有元数据(名称、日期、标签)的 tgz/zip 文件
– 根据 SHA 和/或名称进行查询和下载
– 使用本地工具(基于 Python?)从子目录中创建带有正确元数据和签名的制品库
他甚至认为一个基于 Web 的门户网站也几乎超出了他的需求范围(当然,这样的门户网站也很好)。他认为这些工具似乎不应该需要像 archiva、artifactory 等那样的基础设施和复杂性。或者也许这些工具中有一些简单模式,只是他找不到而已?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
你可以使用 scp、sftp 或类似的命令行工具进行上传和下载。虽然无法获得高级元数据,但可以使用符号链接来实现标签功能。
以下是使用 scp 进行上传和下载的示例:
1. 使用 scp 命令将文件上传到远程服务器:
scp your_file.tgz user@remote_server:/path/to/destination
- 使用 scp 命令从远程服务器下载文件:
scp user@remote_server:/path/to/file.tgz /local/path/to/destination
请注意,这种方法无法提供高级元数据功能,但可以满足基本的上传和下载需求。
方案2
请注意以下操作注意版本差异及修改前做好备份。
如果你无法找到符合你需求的现有工具,你可以考虑自己编写一个简单的二进制制品库。以下是一个示例项目:https://github.com/garyo/binary-artifact(MIT 许可证)。
这个项目是一个增强版的 tar/zip 创建工具,它会创建一个包含内容签名和明确定义的文件名的清单,以便可以在构建文件(如 Ansible/Puppet/Chef/SCons)中以可重复、可追踪的方式指定制品。
使用这个工具,制品可以存储在构建系统可以找到的任何地方(如 Google Drive、Dropbox、本地 NAS 等),可以根据特定的名称下载制品,并像往常一样解压和使用它们。这个工具不对制品的存储位置做任何假设。
方案3
请注意以下操作注意版本差异及修改前做好备份。
如果你希望使用 CDN,你可以上传文件和压缩文件,并且许多 CDN 都有 API,例如:https://cloudinary.com/documentation/django_integration。当然,还有其他一些非常规的解决方案,例如将代码或脚本插入到使用 base64 的伪图像中,并将其上传到公共服务器,或者使用 Facebook 像素 来添加脚本或文件。希望这对你有所帮助。
方案4
请注意以下操作注意版本差异及修改前做好备份。
你还可以使用 Docker 镜像和 Docker registry。在你的情况下,每个 Docker 镜像都是一个包含可以在启动容器后下载的制品的 nginx。虽然听起来有些奇怪,但你可以使用命名方案和基于 SHA 的增量,以及标签来管理制品。
请注意,这种方法需要你熟悉 Docker,并且需要在构建和部署过程中使用 Docker 相关的工具和命令。