本文来自于知乎专栏: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 Flaskapp = 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)相关推荐

  1. 如何在华为云软件开发云上运行Python

    一. 华为云软件开发云与Python 1. [华为云](https://l.gushuji.site/huawei)软件开发云简介 华为云软件开发云(DevCloud)是集华为近30年研发实践,前沿研 ...

  2. 华为云设计语言_让开发者相见恨晚?!华为云软件开发云实现云上敏捷开发

    [51CTO.com原创稿件]弗吉尼亚鹿是现存最古老的一种鹿.这并不是偶然的,而是因为350万年来,这门优雅的物种延续了一种有效的生存办法--它们保存了灵活的本性和迅速适应环境的能力.这恰恰佐证了达尔 ...

  3. 如何在华为云软件开发云上搭建JavaWeb,Maven项目

    本文将使用华为云软件开发云向大家演示如何搭建JavaWeb,Maven项目. 一.相关信息 1.华为云软件开发云简介 华为云软件开发云(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研 ...

  4. 上线一周年 华为云软件开发云为何如此受欢迎?

    软件开发云之于软件工程,就如同机床之于制造业.华为云软件开发云正在努力成为软件业的"工作母机". 去年12月,华为云在大连正式上线发布了软件开发云平台(DevCloud),平台刚一 ...

  5. 重塑软件产业,华为云软件开发云能做些什么?

    每隔几年,变革这个词就会被推至每个人.每个企业.每个行业.每个领域的面前,而保持基业常青只有一个办法,那就是积极响应变化. 眼下就是一个正在经历巨变的时期,然而就像移动互联网时代到来之前,没人会想到微 ...

  6. 华为云软件开发云VS开发痛点=?

    在软件开发的过程中,是不是总会遇到这些问题: 搭建一个开发环境,用了九牛二虎之力,悲催的是竟然用不了-- 团队同事突然出差,他写的代码出现问题,我却不会改-- 提升软件件质量靠代码,交叉看.找大拿,简 ...

  7. 什么是应用管理与运维平台(ServiceStage)?

    什么是应用管理与运维平台(ServiceStage)? 更新时间: 2020/07/15 GMT+08:00 查看PDF 分享 应用管理与运维平台(ServiceStage)是一个应用托管和微服务管理 ...

  8. 第9期 ServiceStage应用管理与运维平台,让业务创新“快人一步”

    第9期 ServiceStage应用管理与运维平台,让业务创新"快人一步" 企业云化已成为不可逆转之趋势 *ServiceStage是面向企业及开发者的一站式应用平台* 支持基于微 ...

  9. 华为云软件开发平台(DevCloud)流水线式部署Vue项目,并且通过域名访问

    一.准备环境 1.1.华为弹性云服务器(ECS)或者云耀云服务器(HECS) 1.2.软件开发平台(DevCloud) 1.3.容器镜像服务(SWR) 1.4.云解析服务(SWR) 二.软件开发平台( ...

最新文章

  1. 超星未来发布新一代高级别自动驾驶车载计算平台
  2. 独家|华为进行组织架构调整 CloudAI升至第四大BG
  3. Spring 框架的设计理念与设计模式分析
  4. Redis-序列化和存储模式
  5. C++ new一个数组方法和初始化的方法
  6. leetcode笔记:Search in Rotated Sorted Array
  7. nextcloud服务器处于维护模式,Nextcloud 加密开启与管理
  8. Vue 计算属性 computed
  9. Python中字符串的startswith()和endswith()方法
  10. tensorflow随笔——concat(), stack(), unstack()
  11. 在BetterZip的收藏夹中如何添加经常使用的文件夹?
  12. 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码
  13. 显示地区名称用城市代码查询城市天气
  14. 【​观察】做好数据到介质的连接者 新数据时代浪潮存储的行与思
  15. 读取/保存/写入 图像文件的shape格式
  16. windows配置本地的虚拟主机
  17. 深度学习方法的超分辨率(Super-resolution)方向论文【不定期更新】
  18. 生态对对碰|云和恩墨数据库云管平台 zCloud 最新支持 TiDB
  19. CSS复合选择器、元素显示模式、背景
  20. SDL_Image,d3d9与OpenGL Shader混用方法(一)

热门文章

  1. 调用华为云GES服务业务面API相关参数的获取
  2. 论文笔记 | Generating Diverse and Consistent QA pairs from Contexts with Information-Maximizing Hierarch
  3. 如何引流购物粉?如何引流网购粉?怎么吸购物粉?
  4. C语言实现三子棋小游戏(编程思路以及代码详解)
  5. $ NON-NLS-1 $是什么意思?
  6. 浙江中级聘用计算机还需要吗,浙江省中级高级职称计算机考试要考几个模块?...
  7. [导入]2008张国立倾情打造《想爱都难》全30集
  8. 百度地图获取城市名称
  9. 【91xcz】教你win7电脑如何升级win8系统
  10. [Python]... 和pass