通过 GitLab CI/CD 发布文件至 MinIO

GitLab CI/CD 是一个基于 GitLab 的持续集成和持续交付的服务,它可以帮助开发者在每次提交代码后自动执行一系列的任务,例如编译、测试、打包和部署。MinIO 是一个高性能的对象存储服务,它可以提供与 Amazon S3 兼容的 API,并支持分布式、容错和加密等特性。本文将介绍如何使用 GitLab CI/CD 将生成的文件发布到 MinIO 上,以实现一个简单而高效的自动化流程。

先决条件

  • 拥有一个 GitLab 账号,并创建或导入一个项目
  • 拥有一个 MinIO 账号,并创建或获取一个存储桶(Bucket)和访问密钥(Access Key 和 Secret Key)
  • 在项目根目录下创建一个 .gitlab-ci.yml 文件,用于定义 GitLab CI/CD 的配置

如何配置 Gitlab CI/CD

要使用 Gitlab CI/CD 自动发布文件至 MinIO 对象存储,我们需要做以下几个步骤:

  1. 在项目根目录下创建一个 .gitlab-ci.yml 文件,这是一个声明式的文件,用于定义 Gitlab CI/CD 的流程和任务。
  2. .gitlab-ci.yml 文件中定义一个 deploy 阶段,用于执行发布文件的操作。
  3. deploy 阶段中使用 mc 命令行工具或者其他 MinIO 客户端工具来上传文件至 MinIO 对象存储。
  4. deploy 阶段中设置一些环境变量,如 MinIO 的地址、密钥、桶名等。
  5. 在项目设置中开启 Gitlab CI/CD,并添加相应的环境变量。

这里我们假设项目已经有了构建脚本,并且生成了 dist/ 目录。如果没有,请根据自己的项目情况进行调整。

另外,我们还需要在项目设置中添加以下三个环境变量:

  • MINIO_URL: MinIO 的地址,如 http://localhost:9000
  • MINIO_ACCESS_KEY: MinIO 的访问密钥
  • MINIO_SECRET_KEY: MinIO 的访问密钥

这些环境变量可以在项目设置 -> CI/CD -> Variables 中添加,并且可以选择是否保护或者掩藏。

下面是一个示例的 .gitlab-ci.yml 文件:

stages:
  - deploy

before_script:
  - curl https://dl.min.io/client/mc/release/linux-amd64/mc -o mc  # 下载并安装 MinIO 客户端
  - chmod +x mc  # 赋予可执行权限

master-deploy:
  stage: deploy
  only:
    - master # 只有master更新的时候才执行命令
  script: # 执行的命令
    - ./mc config host add minio $MINIO_URL $MINIO_ACCESS_KEY $MINIO_SECRET_KEY # 设置 MinIO 别名和认证信息
    - ./mc cp dist/ minio/<bucket-name>/<project-name>/ # 将 dist 目录下的所有文件复制到 MinIO 的指定存储桶和目录下

这个文件定义了一个 deploy 阶段

  • before_script下载并赋予了MinIO客户端可执行权限。
  • 然后执行的命令中第一条设置了 MinIO 的地址和密钥。
  • 第二条命令是将项目构建后生成的 dist/ 目录下的所有文件复制到 MinIO 的指定桶中。

如何验证结果

当我们提交代码后,Gitlab CI/CD 就会自动触发并执行 .gitlab-ci.yml 文件中定义的任务。我们可以在项目页面 -> CI/CD -> Pipelines 中查看流程的状态和日志。