北京白癜风治疗最好医院是哪家 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/mbbdf_zx/emwsafw/如果您不想将工件上传到公共存储库,或者如果您在未连接到公共存储库的私有网络上工作,则需要能够将依赖项离线存储在私有存储库中并在本地推送或拉取它们。
根据维基百科,二进制存储库管理器(BRM)是“一种软件工具,旨在优化软件开发中使用和生成的二进制文件的下载和存储”,例如.jar、.tar或.zip档案。作为大多数DevOps工具链的关键组件,BRM位于构建管道之后。这就是为什么它有时被称为“构建存储库”、“工件存储库”或“管道状态存储库”的原因。
传统的DevOps管道需要自动验证、测试、打包和版本化到工件(二进制文件)中的源代码。然后,工件必须存储在源代码存储库之外,并可供持续交付管道的后续阶段使用。作为管理二进制文件和依赖项的中心点,以及用于构建内部开发软件促销的集成库,BRM应该托管这些工件。
图1.普通软件开发团队的交付管道
几乎任何规模的软件项目都需要将其二进制工件保存在存储库中,以便程序员或确保持续集成(CI)、交付(CD)和部署(CD)的工具能够访问它们。由于管理存储库的软件质量很重要,因此BRM应满足以下要求:
可集成性——每种编程语言都有大量的构建自动化工具,例如用于Java的Maven、用于JavaScript的Npm或用于Ruby的Rake。还有很多持续集成工具,比如Jenkins或Travis。由于自动化是DevOps最重要的方面,因此预计每个或大部分都有插件,从而能够与BRM无缝集成。
可用性——工件是软件开发过程的重要组成部分,它们必须在需要时立即可供程序员或构建工具使用,甚至没有微小的延迟,并以尽可能快的速度交付。
可扩展性——大多数构建工件都是大型二进制文件;其中一些可能大于1Gb,例如Docker映像或.war(生产就绪的Java档案)。BRM必须能够维护大型数据集,几乎没有大小限制。
可靠性——必须尽可能排除因软件或硬件故障而损坏数据的能力。
Artipie
Artipie是一个免费的二进制工件管理工具。Artipie不仅仅是一个二进制工件Web服务器——它是一个工件管理构造函数,它包含许多内置在服务器组件中的组件。这是一个开源项目,始于年,并且正在积极发展。
所有Artipie组件均基于反应式、异步、非阻塞和背压流和原则,使Artipie能够以少量内核线程承受繁重的工作负载。
Artipie架构由3个基本部分组成:
ArtipieHTTP引擎
存储库适配器
存储
图2.Artipie结构
ArtipieHTTP引擎
Artipie引擎是一个Java应用程序,它公开了一个用于存储库访问和管理操作的HTTP端点。它将HTTP请求路由到存储库适配器并提供身份验证机制。ArtipieHTTP引擎基于Vert.x和RxJava框架构建,通过异步、反应式和非阻塞操作为项目提供轻量级的灵活性和可扩展性。
Artipie上传操作最常见的数据流如下:客户端正在向服务器发送一些二进制工件,服务器会找到负责的存储库适配器来处理请求;存储库适配器将流保存到存储;完成后,它会更新存储库的元数据(某些存储库的工作方式不同,例如,Docker使用元数据作为路径)。
图3.使用S3实现存储的ArtipieMaven存储库的上传操作
存储库适配器
存储库适配器是独立项目,旨在实现API以与特定包类型(npm、maven等)的存储库客户端和元信息生成层进行交互。Artipie引擎使用适配器来提供BRM功能。每个存储库适配器都封装存储API以访问二进制blob和元数据文件。
Artipie支持以下类型的存储库:
Docker-用于镜像的私有Docker注册表。
Maven-Java、Kotlin、Groovy、Scala、Clojure工件和各种类型的依赖项,如.jar、.war、.klib等。
NPM-JavaScript代码共享和包存储。
PyPI-Python包索引。
Anaconda-为Python、R、Lua、C、C++等构建数据科学包。
RPM-用于RHEL、PCLinuxOS、Fedora、AlmaLinux、CentOS、openSUSE、OpenMandriva、OracleLinux等的.rpm软件包存储库。
Gem-Ruby的RubyGem托管服务.
Go-Go包裹存储。
文件(二进制)存储-托管您喜欢的任何文件。
Helm-Helm图表存储库。
NuGet-.NET包的托管服务。
Debian-基于Debian的Linux发行版的软件包存储库:Ubuntu、MXLinux、Mint、RaspberryPiOS、ParrotOS等。
Composer-PHP包的包源。
贮存
存储库适配器将上传和创建的二进制文件放置在存储中。Artipie具有抽象存储,它提供了对物理数据存储系统的抽象。简单性使得为几乎任何数据存储系统实现接口变得容易。它有两个主要操作:从存储中放入和获取项目以及一些附加功能,例如检查项目是否存在、列出存储项目或获取项目元数据。
目前,有以下存储实现:
文件系统存储
Redis存储
基于S3的存储
抽象存储还提供了一个接口,可以实现该接口以支持您需要的任何类型的存储。
开始使用Artipie
使用Artipie有两种选择:
使用DockerCompose运行ArtipieDocker映像
在JVM上运行Artipiejar存档
我将展示一个简单的示例,说明如何使用DockerCompose在本地运行Artipie,并将其配置为Windows机器上Docker映像的存储库。
准备中
要运行Artipie,您需要安装Docker,然后您可以简单地克隆GitHub存储库,并使用路径上的示例C:\,或按照以下步骤操作:
为Artipie项目创建一个文件夹(例如C:\artipie)
为Artipie配置创建一个文件夹(例如C:\artipie\config),并将包含Artipie服务器配置的yml文件放在该文件夹中。在我的示例中,该文件称为artipie.yml.您必须指定Artipie将找到所有存储库配置的路径。我将Docker存储库的配置路径指定为,因为在第4步中进行设置时var/artipie/repo,我将文件夹从本地Windows机器安装C:\artipie\repo到ArtipieDocker容器中的目录。
meta:storage:type
spath:/var/artipie/repo#pathtorepositoryconfigurationslayout
lat
3.为存储库配置文件(例如C:\artipie\repo)创建一个文件夹,然后将包含存储库配置的yml文件放入该文件夹。此文件的名称将是要创建的存储库的名称。例如,文件将被命名my-docker.yml,存储库将相应地命名为my-docker。要使用FileStorage类型配置存储,设置Artipie将存储所有项目的路径就足够了。系统必须具有读写权限才能在此路径上创建文件。在我的示例中,路径将是/var/artipie/images.
meta:storage:type
spath:/var/artipie/repo#pathtorepositoryconfigurationslayout
lat
4.docker-