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 对象存储,我们需要做以下几个步骤:
- 在项目根目录下创建一个
.gitlab-ci.yml
文件,这是一个声明式的文件,用于定义 Gitlab CI/CD 的流程和任务。 - 在
.gitlab-ci.yml
文件中定义一个deploy
阶段,用于执行发布文件的操作。 - 在
deploy
阶段中使用mc
命令行工具或者其他 MinIO 客户端工具来上传文件至 MinIO 对象存储。 - 在
deploy
阶段中设置一些环境变量,如 MinIO 的地址、密钥、桶名等。 - 在项目设置中开启 Gitlab CI/CD,并添加相应的环境变量。
这里我们假设项目已经有了构建脚本,并且生成了 dist/
目录。如果没有,请根据自己的项目情况进行调整。
另外,我们还需要在项目设置中添加以下三个环境变量:
MINIO_URL
: MinIO 的地址,如 http://localhost:9000MINIO_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 中查看流程的状态和日志。