此版本的 GitHub Enterprise 已停止服务 2021-09-23. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

为 GitHub Packages 配置 MinIO 存储桶的快速入门

配置您的自定义 MinIO 存储桶,用于 GitHub Packages。

注: GitHub Packages 目前正在测试用于 GitHub Enterprise Server 2.22。 要加入 您的 GitHub Enterprise Server 实例 的测试版,请使用注册表单

在 您的 GitHub Enterprise Server 实例 上启用和配置 GitHub Packages 之前,您必须准备第三方存储解决方案。

MinIO 在企业上提供对象存储并支持 S3 API 和 GitHub Packages。

此快速入门将演示如何使用 Docker 设置 MinIO 以与 GitHub Packages 使用,但除了 Docker 之外,您还有其他用于管理 MinIO 的选项。 有关 MinIO 的更多信息,请参阅官方的 MinIO 文档

1. 根据您的需求选择 MinIO 模式

MinIO 模式针对以下平台优化需要存储基础架构
独立 MinIO(在单个主机上)快速设置不适用
MinIO 作为 NAS 网关NAS(网络连接存储)NAS 设备
群集式 MinIO(也称为分布式 MinIO)数据安全在群集中运行的存储服务器

有关您的选项的更多信息,请参阅官方的 MinIO 文档

2. 安装、运行和登录到 MinIO

  1. 为 MinIO 设置首选环境变量。

    以下示例使用 MINIO_DIR

    $ export MINIO_DIR=$(pwd)/minio
    $ mkdir -p $MINIO_DIR
  2. 安装 MinIO。

    $ docker pull minio/minio

    更多信息请参阅官方的“MinIO 快速入门指南”。

  3. 使用您的 MinIO 访问密钥登录 MinIO。

    $ export MINIO_ACCESS_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
    # this one is actually a secret, so careful
    $ export MINIO_SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
    $ export MINIO_ACCESS_KEY=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
    # this one is actually a secret, so careful
    $ export MINIO_SECRET_KEY=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)

    您可以使用环境变量访问 MinIO 密钥:

    $ echo $MINIO_ACCESS_KEY
    $ echo $MINIO_SECRET_KEY
  4. 在您选择的模式下运行 MinIO。

    • 在单一主机上使用 Docker 运行 MinIO:

      $ docker run -p 9000:9000 \
              -v $MINIO_DIR:/data \
              -e "MINIO_ACCESS_KEY=$MINIO_ACCESS_KEY" \
              -e "MINIO_SECRET_KEY=$MINIO_SECRET_KEY" \
              minio/minio server /data

      更多信息请参阅“MinIO Docker 快速入门指南”。

    • 使用 Docker 作为 NAS 网关运行 MinIO:

      此设置对于已经有 NAS 用作 GitHub Packages 的备份存储的部署非常有用。

      $ docker run -p 9000:9000 \
              -v $MINIO_DIR:/data \
              -e "MINIO_ACCESS_KEY=$MINIO_ACCESS_KEY" \
              -e "MINIO_SECRET_KEY=$MINIO_SECRET_KEY" \
              minio/minio gateway nas /data

      更多信息请参阅“NAS 的 MinIO 网关”。

    • 使用 Docker 作为集群运行 MinIO: 此 MinIO 部署使用多个主机和 MinIO 的擦除编码来提供最强的数据保护。 要在群集模式下运行 MinIO,请参阅“分布式 MinIO 快速入门指南”。

3. 为 GitHub Packages 创建 MinIO 存储桶

  1. 安装 MinIO 客户端。

    $ docker pull minio/mc
  2. 使用 GitHub Enterprise Server 可以访问的主机 URL 创建存储桶。

    • 本地部署示例:

      $ export MC_HOST_minio="http://${MINIO_ACCESS_KEY}:${MINIO_SECRET_KEY} @localhost:9000"
      $ docker run minio/mc BUCKET-NAME

      此示例可用于 MinIO 单机版或作为 NAS 网关的 MinIO。

    • 集群部署示例:

      $ export MC_HOST_minio="http://${MINIO_ACCESS_KEY}:${MINIO_SECRET_KEY} @minioclustername.example.com:9000"
      $ docker run minio/mc mb packages

后续步骤

要完成 GitHub Packages 的存储配置,您需要复制 MinIO 存储 URL:

echo "http://${MINIO_ACCESS_KEY}:${MINIO_SECRET_KEY}@minioclustername.example.com:9000"

关于后续步骤,请参阅“使用 MinIO 启用 GitHub Packages”。