华为云自动化部署(Docker)

549 阅读7分钟

这是我参与更文挑战的第4天,活动详情查看: 更文挑战

搭建仓库

image.png

设置SSH密匙

hwcloud2.png

image.png

push项目

image.png

代码检查

image.png

显示菜单

image.png

构建编译

image.png

不使用模板,选择“制作镜像并推送SWR仓库”构建,构建完将自动上传至镜像仓库

image.png

此构建需要的Dockerfile文件内容如下:

# 基于的基础镜像
FROM python:3.6.8
# 维护者信息
MAINTAINER WangScaler@163.com
# 代码添加到code文件夹
ADD / /wangscaler
# 设置code文件夹是工作目录
WORKDIR /wangscaler
# 安装支持
RUN cd /wangscaler && ls
RUN ls
RUN pip install --user -r /wangscaler/requirements.txt -i  https://pypi.doubanio.com/simple/
# python进行编译,自己的脚本,编译开始
# RUN python CreateLicense.py 02:42:ad:12:01:02
RUN python setup.py
RUN python -m compileall -b build/
# 编译结束
RUN pwd && ls
CMD ["python", "build/server.pyc"]

部署

在部署的机器上配置密码登录

获取长期有效docker login指令

操作步骤

获取镜像仓库访问地址、区域项目名称。

登录管理控制台,单击右上角您的用户名处,单击“我的凭证”。

在“API凭证”的项目列表中查找当前区域对应的项目。

如下图所示,“华北-北京一”对应的项目为“cn-north-1”。

image.png 镜像仓库地址为 : swr.区域项目名称.myhuaweicloud.com,如中国华北区1对应的镜像仓库地址为:swr.cn-north-1.myhuaweicloud.com。

获取AK/SK访问密钥。

  • 说明:访问密钥即AK/SK(Access Key ID/Secret Access Key),表示一组密钥对,用于验证调用API发起请求的访问者身份,与密码的功能相似。如果您已有AK/SK,可以直接使用,无需再次获取。

登录管理控制台,单击右上角您的用户名处,单击“我的凭证”。在左侧导航栏中选择“访问密钥”,单击“新增访问密钥”。输入当前用户的登录密码,并通过邮箱或者手机进行验证。

  • 说明:在统一身份认证服务中创建的用户,如果创建时未填写邮箱或者手机号,则只需校验登录密码。

单击“确定”,下载访问密钥,其中包含AK和SK。

  • 说明:为防止访问密钥泄露,建议您将其保存到安全的位置。

登录一台linux系统的计算机,执行如下命令获取登录密钥。

printf "*$AK*" | openssl dgst -binary -sha256 -hmac "*$SK*" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'

其中AKAK和SK为2获取的AK/SK。

image.png 使用如下的格式拼接docker login指令。

docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址]

其中,区域项目名和镜像仓库地址在1中获取,AK在2中获取,登录密钥为3的执行结果。

总结:

根据ak和sk在centos上生成登录密匙

printf "NO2PHzzzzSPCX" | openssl dgst -binary -sha256 -hmac "IJVZuW2zzzzzSlFNZFt7LjhtA3" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'

登录

docker login -u cn-north-4@NO2PHzzzzSPCX -p 15489d25d17222222222222727c45ebb17262ba0e3xxxxxxxxxxeb69415b914a48eb7 swr.cn-north-4.myhuaweicloud.com

拉取镜像

// 地址都是假的
docker pull swr.cn-north-4.myhuaweicloud.com/xxx/xxx:v1.1

部署镜像

停止部署机器上已存在的容器

hwcloud12.png 删除部署机器上已存在的容器

image.png 删除部署机器上已存在的镜像

image.png 登录镜像仓库

image.png

hwcloud9.png 拉取镜像

image.png

运行镜像

image.png

构建持续交付流水线

实现自动化检查代码,构建项目镜像,发布到仓库,在部署机器上拉取镜像,运行项目镜像

预置流水线任务任务说明
代码检查基本的流水线任务。
Dockefile构建成docker镜像流水线任务。
部署镜像部署到生产机器流水线任务。

img说明:

关于vote、result、worker的说明,请参见HE2E DevOps实践流程

配置流水线串接代码检查,编译构建和自动化部署步骤

  • 创建并触发持续交付流水线
  1. 进入项目,单击页面上方导航

    “构建&发布 > 流水线”

    ,进入流水线服务。

    ​ 单击 “新建流水线”,根据下表配置流水线。

    步骤填写/选择建议
    基本信息流水线名称:代码检查
    选择模板不使用模板,直接创建
    选择代码源DevCloud 源码仓库:ziot
  2. 单击图标删除阶段“发布仓库”,单击图标)添加“自定义阶段”。

  3. 单击图标img在右侧滑出框中输入名称“代码检查”,单击“保存”。

  4. 单击阶段“代码检查”中“请选择子任务”。

  5. 在右侧滑出框中,类型选择“代码检查”,任务勾选“xxx”,单击“保存”

hwcloud10.png 按照同样方式,添加构建任务“构建镜像”。在阶段“编译构建”

image.png

构建成docker镜像,并发布到镜像仓库。

8.构建编译阶段后后添加阶段“部署”,并在该阶段中添加部署任务“部署镜像”,单击“保存”。

系统自动跳转至“流水线详情”页面,单击“全新执行”,启动流水线。

当出现以下页面时,表示任务执行成功。若任务执行失败,请于执行失败处检查失败原因(如:部署阶段执行失败,则进入部署任务查看部署日志,结合6排查失败原因),或参照流水线-帮助文档中的常见问题排查。

  • 添加质量门禁

1、进入流水线任务“phoenix-sample-pipeline”的“流水线配置”页面。

2、在阶段“代码检查”下的“质量门禁处”,单击img

在页面右侧滑框中,单击“点击创建”。在弹框中输入名称“代码检查门禁”, 打开“CodeCheck问题数”开关并输入门禁阈值“5”,单击“保存”。

image.png

3、在“门禁”下拉列表中选择刚刚创建的“代码检查门禁”,单击“保存”。

4、保存流水线,返回“流水线详情”页面。启动流水线任务,待任务执行结束可看到:由于代码检查问题数大于5,因此流水线任务执行失败。

5、单击“配置”,修改“代码检查门禁”的阈值为15,保存流水线并执行。待任务执行结束可看到:由于代码检查问题数小于15,因此流水线任务执行成功。

image.png

更新流水线配置,实现代码变更触发的持续交付流水线

进入项目,单击页面上方导航“构建&发布 > 流水线”,进入流水线服务。

找到流水线任务“phoenix-sample-pipeline”,单击此任务对应操作列中的图标img,进入“流水线配置”页面。

选择“触发器”页签,在“触发分支”下拉列表中勾选所需分支,单击“保存”。

image.png

设置完成后,当所选分支有代码变更提交时,将自动触发该任务。

流水线配置高级功能

添加人工审核

​ DevCloud支持在流水线任务中加入人工审核设置,在某个阶段任务执行完成时,需要人工审核通过才能继续执行。

1、进入流水线任务“phoenix-sample-pipeline”的“流水线配置”页面。

2、在阶段“部署”下,单击“添加任务”。

在右侧滑框中,选择类型“流水线控制”,勾选“人工审核”,并在“审核人”下拉列表中勾选所需的审核人。

image.png

页面中的说明如下:

参数说明
审核人可以设置一个或多个审核人。
审核模式全部人审核表示所有人都必须通过任何才能继续,任一人审核表示审核人列表中的任何一个人审核任务就可以继续。
审核时长设置审核的有效期,超期后审核无效,不能在进行审核。
备注审核说明。

3、返回“流水线配置”页面,将任务“流水线控制”拖动到任务“部署”上方,单击“保存”。

4、启动流水线,当执行到“人工审核”时,页面中将弹框提示任务需审核。

5、审核人进入流水线任务

“phoenix-sample-pipeline”

的详情页

单击“批准”,流水线将自动继续执行。 单击“驳回”,流水线将中止执行。