前言 阿里云的 CI/CD 工具流水线(Flow)用了有好几年了,使用起来还不错(主要原因还是配套基本齐全且白嫖)。
最近在群辉上部署了 Minio,故此希望将前端资源能够直接传入 Minio,找了一圈未找到能用的步骤,直接写一个。
创建自定义步骤(step) 参见官方文档:https://help.aliyun.com/document_detail/153811.html?spm=a2c4g.202430.0.0.21c51c2e5IaEXG#section-pv0-665-mep
下载安装 登录 Flow
注意:
flow login 命令在 linux 系统执行可能会遇到
listen tcp :80: bind: permission denied
这个是普通用户没有权限监听 80 端口,需要 root 权限,以及如果 80 端口占用应该也是不行的;
新建步骤 1 2 3 mkdir <your-step-sign>cd <your-step-sign>flow step init <your-step-sign>
将 更换为你自己的步骤标识,注意:step 标识为整个云效唯一,若被其他步骤占用则无法创建成功。
这个命令会在本地 `
`
目录下创建如下文件:
1 2 3 4 5 6 7 .step |- .. |- entry.sh <your-step-sign> |- Dockerfile |- step.sh |- step.yaml
集成 mc 客户端进步骤容器
官方文档参见:https://min.io/docs/minio/linux/reference/minio-mc.html
下载 ossutil 二进制文件,放到你的步骤目录
再创建一个配置文件 .mclconfig 1 2 3 4 [Credentials] minioHost=MINIOHOST accessKeyID=AKID accessKeySecret=AKS
编辑 Dockerfile 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 FROM registry.cn-beijing.aliyuncs.com/rdc-builds/base:1.0 MAINTAINER khalid <khalidlife@163.com> COPY .step/*.sh /root/ COPY uploadMinioMc/step.sh /root/step.sh RUN chmod +x /root/*.sh COPY uploadMinioMc/mc /usr/local/bin/mc COPY uploadMinioMc/mcconfig/mcconfig.json /root/.mc/config.json RUN chmod +x /usr/local/bin/mc ENV PATH=/usr/local/bin:$PATH ENTRYPOINT [ "/root/entry.sh" ]
实现 mc 鉴权和执行命令 编辑 step.yaml 实现步骤表单 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 --- name: s3上传 sign: uploadMinioMc description: 使用Minio-mc上传 image: ********* items: - label: endpoint name: endpoint type : input - label: accessKeyID name: accessKeyID type : input - label: accessKeySecret name: accessKeySecret type : input - label: bucket name: bucket type : input - label: 执行命令 name: command type : shell rules: value: | mc ls minio
编辑步骤 shell 文件 step.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/bin/bash set -eecho [INFO] PIPELINE_ID=$PIPELINE_ID echo [INFO] PIPELINE_NAME=$PIPELINE_NAME echo [INFO] BUILD_NUMBER=$BUILD_NUMBER echo [INFO] EMPLOYEE_ID=$EMPLOYEE_ID echo [INFO] WORK_SPACE=$WORK_SPACE echo [INFO] PROJECT_DIR=$PROJECT_DIR echo [INFO] PLUGIN_DIR=$PLUGIN_DIR echo [INFO] BUILD_JOB_ID=$BUILD_JOB_ID cd $PROJECT_DIR sed -i "s|AKID|${accessKeyID} |g" /root/.mc/config.json sed -i "s|AKS|${accessKeySecret} |g" /root/.mc/config.json sed -i "s|EP|${endpoint} |g" /root/.mc/config.json sh -ex $WORK_SPACE /user_command.sh
本地运行 1 flow step run <your-step-sign>
上线步骤 1 2 3 docker login --username=xxx registry.cn-hangzhou.aliyuncs.com flow step publish <your-step-sign>
这个命令会执行两个动作:
1. 将本地的 Dockerfile 构建成为 step.yaml 中的 docker 镜像并 push 到远端仓库。请确保本地已经安装了 Docker。
2. 将 step.yaml 描述的步骤原信息 publish 到云效的服务器。
使用flow step ls
可以查看已经发布的步骤
云效配置 添加企业步骤
配置使用步骤 填写相关参数
编写操作 minio 的脚本 1 2 3 4 5 6 7 8 9 version=`cat package.json | jq -r '.version' ` name=`cat package.json | jq -r '.name' ` mc cp -r $PROJECT_DIR /public/ minio/${bucket} /${name}