使用华为云软件开发平台devcloud和应用管理与运维平台servicestage实现持续集成(CI)持续部署(CD)

Posted sloanqin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用华为云软件开发平台devcloud和应用管理与运维平台servicestage实现持续集成(CI)持续部署(CD)相关的知识,希望对你有一定的参考价值。

本文来自于知乎专栏:https://zhuanlan.zhihu.com/p/385350636

说明:

软件开发平台devcloud是持续集成(CI)持续部署(CD)工具;

应用管理与运维平台servicestage用来管理多个运行环境(例如alpha开发、beta测试、gamma集成测试、prod生产)。

devcloud关注软件的开发过程,servicestage关注运维过程。

本文通过一个helloworld的例子,展示如何实现持续集成持续部署。

本文的例子使用几行代码,打包成docker镜像,将镜像上传到SWR容器镜像仓库,最后部署在k8s集群中。大家可以参考这个流程,自己注册一个华为云账号,很快实现整个流程。

一、创建项目

devcloud的链接:软件开发平台DevCloud_DevOps_开发者平台-华为云

  • 点击进入devcloud的控制台,然后新建项目:

  • 创建一个scrum项目,项目名称helloworld

二、托管代码

  • 代码->代码托管->新建,创建一个helloworld的代码库

创建好代码库-helloworld

  • 向代码库中添加几个文件:

main.py:python代码文件

requirements.txt:python依赖的包

Dockerfile:docker打包命令

新建文件:

  • 新建文件名称main.py,内容:
from flask import Flask

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def hello_world():
    return 'Hello, World! 这里是你好,世界'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5002)

  • 新建文件名称requirements.txt,内容:
Flask
  • 新建文件名称Dockerfile,内容:
# Using official python runtime base image
FROM python:3.7-alpine

# Set the application directory
WORKDIR /app

# Install our requirements.txt
ADD requirements.txt /app/requirements.txt
RUN pip install -i https://repo.huaweicloud.com/repository/pypi/simple -r requirements.txt

# Copy our code from the current folder to /app inside the container
ADD . /app

# Make port 5002 available for links and/or publish
EXPOSE 5002

# Define our command to be run when launching the container
CMD ["python", "/app/main.py"]

这样我们完成了代码编写

三、编译构建

接下来我们要新建编译构建任务。

编译构建任务会拉取代码,执行构建命令,生成镜像,最后推送到镜像仓库中:code -> 构建 -> 容器镜像仓库

  • 新建编译构建任务

  • 选择空白构建模板

  • 添加构建步骤:制作镜像并推送到SWR仓库

  • 设置一个自定义参数imageTag

配置组织:SWR镜像仓库的组织,构建生成的镜像会推送到这个组织下。这里配置为melody。

配置镜像名字:自己取一个名字,生成的镜像就是这个名称。这里配置为helloworld。

配置镜像标签:镜像标签其实就类似软件包的版本号,这里配置为${imageTag}

  • 执行构建任务,完成后,在容器镜像仓库可以看到我们的生成的镜像:

四、代码检查

代码检查任务,根据自己的需要可以配置下,比较简单,这里先略掉。

代码检查的目的是检查出编码中的不规范的地方,帮助开发人员养成良好的编码习惯。

五、创建应用、组件、环境

  • 在控制台搜索servicestage,进入应用管理与运维平台servicestage控制台,创建应用helloworld

  • 创建组件(组件相当于一个微服务),我这里是一个python微服务而且准备打包成docker镜像运行,所以我选择了自定义配置->通用。

有了应用和组件后,每个组件(微服务)需要有不同的部署环境,一般企业开发至少有测试环境,生产环境。您也可以按照devops流程创建alpha/beta/gamma/prod 4个环境。我这里就创建helloworld-alpha、helloworld-prod两个环境。

  • 环境管理->创建环境

这里需要新增基础资源,由于我还没有计算资源,因此从这里直接跳转到CCE,创建一个k8s集群。

创建好k8s集群后,选择这个集群:

这样我们就创建好了应用-组件-环境

六、部署

然后我们就可以在devcloud创建部署任务,部署到我们的helloworld应用-helloworld组件-helloworld-alpha环境下

  • 新建部署任务,选择空白模板

  • 添加部署步骤:ServiceStage组件部署2.0

参数选择如图中所示,注意镜像版本使用自定义参数${imageTag},如果没有该参数需要用户在参数设置那里先创建一个。

保存后执行,可以看到服务部署成功了

  • 我们测试下看看服务响应是否ok

由于应用是部署在cce(k8s)集群中,外部是无法直接访问的,为了访问服务,我们在servicestage平台上为集群设置一个外部访问。

servicestage -> 应用列表 -> helloworld

设置 -> 添加服务 -> 公网访问。我这里设置的是公网访问,使用的弹性IP,因为我的集群就一个节点,用弹性ip比较方便,如果您的集群是多个节点推荐绑定ELB。我们的代码开放的端口是5002,所以容器端口设置的是5002,对外开放的访问端口是32000。

创建好后点击访问地址,发现服务响应成功:

七、用流水线串联起来

到此为止,我们在devcloud上实现了代码管理、编译构建、发包到镜像仓库、部署到servicestage管理的cce集群中。我们不能每次修改代码还单独点击每个任务,这样就太麻烦了,为了方便一键执行从代码修改到部署到机器,我们接下来需要配置流水线,一键完成全流程。

  • 在devcloud界面选择构建发布 -> 流水线 -> 新建流水线 -> 不使用模板直接创建

  • 构建 -> 添加任务

构建任务选择helloworld,将imageTag设置为流水线参数,这样构建任务和部署任务都可以使用这个参数赋值的结果。

  • 添加部署helloworld-alpha环节

选择任务类型为 部署,选择刚刚创建的helloword的部署任务

这样我们就完成了流水线的编辑,保存流水线。

  • 我们测试下流水线是否好用

首先我们修改下代码,将main.py中返回的字符串的内容修改一下,保存:

然后我们执行流水线。注意:执行流水线时,我们可以配置生成的镜像的标签,上面我们配置的默认是v1.0,你可以每次执行流水线的时候动态配置这个值,例如v1.1 v1.2.

然后我们的流水线就开始执行了,待流水线执行完成后,我们访问刚才的地址,发现返回的内容已经修改了。

!恭喜你,到这里你就体验完了使用devcloud编译、构建、部署的全流程,并且你的应用-组件-环境可以在servicestage平台上开展后续的运维操作。

有了持续集成、持续部署,企业的研发效率会得到巨大的提升,更好的应对业务的竞争。

以上是关于使用华为云软件开发平台devcloud和应用管理与运维平台servicestage实现持续集成(CI)持续部署(CD)的主要内容,如果未能解决你的问题,请参考以下文章

使用华为云软件开发平台devcloud和应用管理与运维平台servicestage实现持续集成(CI)持续部署(CD)

使用华为云软件开发平台devcloud和应用管理与运维平台servicestage实现持续集成(CI)持续部署(CD)

devcloud是啥?

华为云devcloud cloudide是啥工具?

华为如何打造物联网开发新平台—DevCloud和LiteOS的完美结合

Tower与DevCloud对比分析报告