Binary Repository


原文链接 https://dzone.com/articles/easy-way-to-get-your-own-binary-repository

根据维基百科二进制存储库管理器 (BRM)是“一种软件工具,旨在优化软件开发中使用和生成的二进制文件的下载和存储”,例如 .jar、.tar 或 .zip 档案。作为大多数DevOps 工具链的关键组件,BRM 位于构建管道之后。这就是为什么它有时被称为“构建存储库”、“工件存储库”或“管道状态存储库”的原因。

传统的DevOps 管道需要自动验证、测试、打包和版本化到工件(二进制文件)中的源代码。然后,工件必须存储在源代码存储库之外,并可供持续交付管道的后续阶段使用。作为管理二进制文件和依赖项的中心点,以及用于构建内部开发软件促销的集成库,BRM 应该托管这些工件。

img

几乎任何规模的软件项目都需要将其二进制工件保存在存储库中,以便程序员或确保持续集成 (CI)、交付 (CD) 和部署 (CD)的工具能够访问它们。由于管理存储库的软件质量很重要,因此 BRM 应满足以下要求:

  • 可集成性——每种编程语言都有大量的构建自动化工具,例如用于 Java 的 Maven、用于 JavaScript 的 Npm 或用于 Ruby 的 Rake。还有很多持续集成工具,比如 Jenkins 或 Travis。由于自动化是 DevOps 最重要的方面,因此预计每个或大部分都有插件,从而能够与 BRM 无缝集成。
  • 可用性——工件是软件开发过程的重要组成部分,它们必须在需要时立即可供程序员或构建工具使用,甚至没有微小的延迟,并以尽可能快的速度交付。
  • 可扩展性——大多数构建工件都是大型二进制文件;其中一些可能大于 1Gb,例如 Docker 映像或 .war(生产就绪的 Java 档案)。BRM 必须能够维护大型数据集,几乎没有大小限制。
  • 可靠性——必须尽可能排除因软件或硬件故障而损坏数据的能力。

Artipie

Artipie 是一个免费的二进制工件管理工具。Artipie 不仅仅是一个二进制工件 Web 服务器——它是一个工件管理构造函数,它包含许多内置在服务器组件中的组件。这是一个开源项目,始于 2020 年,并且正在积极发展。

Artipie HTTP 引擎

Artipie 引擎是一个 Java 应用程序,它公开了一个用于存储库访问和管理操作的 HTTP 端点。它将 HTTP 请求路由到存储库适配器并提供身份验证机制。Artipie HTTP 引擎基于Vert.xRxJava框架构建,通过异步、反应式和非阻塞操作为项目提供轻量级的灵活性和可扩展性。

Artipie 上传操作最常见的数据流如下:客户端正在向服务器发送一些二进制工件,服务器会找到负责的存储库适配器来处理请求;存储库适配器将流保存到存储;完成后,它会更新存储库的元数据(某些存储库的工作方式不同,例如,Docker 使用元数据作为路径)。

img

图 3. 使用 S3 实现存储的 Artipie Maven 存储库的上传操作

存储库适配器

存储库适配器是独立项目,旨在实现 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、Oracle Linux 等的 .rpm 软件包存储库。
  • Gem - Ruby 的 RubyGem 托管服务.
  • Go - Go 包裹存储。
  • 文件(二进制)存储 - 托管您喜欢的任何文件。
  • Helm - Helm 图表存储库。
  • NuGet - .NET 包的托管服务。
  • Debian - 基于 Debian 的 Linux 发行版的软件包存储库:Ubuntu、MX Linux、Mint、Raspberry Pi OS、Parrot OS 等。
  • Composer - PHP 包的包源。

存储

存储库适配器将上传和创建的二进制文件放置在存储中。Artipie 具有抽象存储,它提供了对物理数据存储系统的抽象。简单性使得为几乎任何数据存储系统实现接口变得容易。它有两个主要操作:从存储中放入和获取项目以及一些附加功能,例如检查项目是否存在、列出存储项目或获取项目元数据。

目前,有以下存储实现:

  1. 文件系统存储
  2. Redis 存储
  3. 基于 S3 的存储

抽象存储还提供了一个接口,可以实现该接口以支持您需要的任何类型的存储。

开始使用 Artipie

使用 Artipie 有两种选择:

准备中

要运行 Artipie,您需要安装 Docker,然后您可以简单地克隆此存储库,并在路径上使用示例C:\,或按照以下步骤操作:

  1. 为 Artipie 项目创建一个文件夹(例如C:\artipie
  2. 为 Artipie 配置创建一个文件夹(例如C:\artipie\config),并将包含 Artipie 服务器配置的 yml 文件放在该文件夹中。在我的示例中,该文件称为artipie.yml. 您必须指定 Artipie 将找到所有存储库配置的路径。我将 Docker 存储库的配置路径指定为,因为在第 4 步中进行设置时var/artipie/repo,我将文件夹从本地 Windows 机器安装C:\artipie\repo到 Artipie Docker 容器中的目录。/var/artipie/repo``docker-compose.yml
meta:
  storage:
    type: fs
    path: /var/artipie/repo #path to repository configurations
  layout: flat
  1. 为存储库配置文件(例如C:\artipie\repo)创建一个文件夹,然后将包含存储库配置的 yml 文件放入该文件夹。此文件的名称将是要创建的存储库的名称。例如,文件将被命名my-docker.yml,存储库将相应地命名为my-docker。要配置具有 FileStorage 类型的存储,设置 Artipie 将存储所有项目的路径就足够了。系统必须具有读写权限才能在此路径上创建文件。在我的示例中,路径将是/var/artipie/images.
repo:
  type: docker
  storage:
    type: fs   #type = FileStorage
    path: /var/artipie/images   #place where the data will be stored
  1. 使用以下说明创建文件docker-compose.yml
version: "3.3"
services:
  artipie:
    image: artipie/artipie:latest
    container_name: artipie
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - /C/artipie/repo:/var/artipie/repo # mount folder with repository configuration
      - /C/artipie/config:/etc/artipie/ # mount folder with Artipie server configuration

文章作者: Kevin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Kevin !
评论
  目录