使用华为云软件开发平台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)