云效和 EDAS 在 DevOps 开发实践中的联合应用

简介: 在之前的文章《使用 Spring Tool Suite 快速开发 EDAS HSF 服务》中说到了如何快速开发运行在EDAS上的服务化应用,本文接着说说如何使用云效再加速应用的研发。 云效是一个一站式的研发效能工具,提供了从“计划->需求->开发->构建->测试->部署->运营”一体化的协同服务和研发支撑。使用云效可以对应用进行快速迭代

在之前的文章《使用 Spring Tool Suite 快速开发 EDAS HSF 服务》中说到了如何快速开发运行在EDAS上的服务化应用,本文接着说说如何使用云效再加速应用的研发。

云效是一个一站式的研发效能工具,提供了从“计划->需求->开发->构建->测试->部署->运营”一体化的协同服务和研发支撑。使用云效可以对应用进行快速迭代研发,满足DevOps的最佳实践。下面就按步骤看看云效是如何加速EDAS HSF服务的开发的。

1、准备工作

 云效侧准备工作

假设阿里云管理员已经创建子账号和企业,这些步骤可以参考云效用户手册。我们从创建项目开始,访问https://rdc.aliyun.com/project开始创建项目,这里需要选择研发项目,这样可以配置代码库,业务空间类型则只是用来做项目管理。

新建项目

进入项目之后,通过设置 > 成员将团队成员加入到项目中,这样团队成员在登陆后能在自己的项目列表中看到相应的项目,就能协同开发应用了。

编辑团队成员

EDAS侧准备工作

创建集群:

在阿里云控制台 > 企业级分布式应用服务 > 资源管理 > 集群里面可以创建集群,本文使用的是Swarm类型的容器集群,也可以选择ECS集群,但是不能选择Kubernetes类型的容器集群,因为目前云效还不支持与Kubernetes类型的容器集群对接,无法将构建产物自动部署过去。

创建集群

创建应用:

在应用管理中创建一个新的应用,应用运行环境可以选择最新版本的EDAS-Container 3.3.9。

创建应用

创建完应用后,记下应用ID,在对接云效的时候需要用到。

EDAS应用ID

2、云效-注册应用

在项目中,通过应用 > 注册应用来新建应用,一个项目中可以包含多个应用。

配置代码库

Git库:注册应用的时候需要绑定Git库,如果已经有Git库了,使用关联已有来关联,新建的话云效会在阿里云GitLab(code.aliyun.com)上创建一个新的Git代码库。这里需要注意的是,阿里云GitLab使用单独的用户管理,在GitLab上需要把之前准备工作步骤中的团队成员再加入进来,通过GitLab > Project > Members > Add new user to project来配置。Master权限可以提交代码到master,Developer权限则只能提交代码到branch。

GitLab用户管理

分支模式:自由模式通常是对master进行主干开发,使用master来开发、集成和部署发布。master上的任何变化,会触发流水线执行构建、部署等连续操作。分支模式则是对特性分支进行开发。这里采用自由模式,直接对master进行开发、集成和发布,以便更直观的看到云效流水线带来的效果。

注册应用

配置代码内容

这个步骤事实上为了生成release文件,release文件控制的是程序类型、开发语言及版本,本文的示例使用的是Java 1.7,初始化模板是Spring Boot。产物路径是灰掉不可更改的,之后可以在Git库里直接修改release文件。

配置代码内容

配置应用

最后一步是配置应用,因为是要将应用部署到EDAS的容器集群中,因此这里选择部署方式为EDAS部署。

配置应用

3、云效-配置环境

在注册应用完成后,进入应用 > 环境可以看到当前应用对应的环境列表,云效在注册应用时自动创建了测试环境(日常环境)、生产环境(预发环境、正式环境)三个配置,本文示例只对测试环境进行配置,以便链接到EDAS集群。进入日常环境 > 部署配置,选择部署方式为EDAS部署,EDAS应用ID就是之前在准备工作步骤中记下的应用的ID。

配置环境

4、IDE-链接代码

克隆阿里云Git库

在Spring Tool Suite(STS)中克隆阿里云GitLab上的代码库,URI可以在code.aliyun.com对应的Git库里复制到,用户认证则使用GitLab中配置的用户名和密码(务必注意不是子账号)。

Clone Git

导入应用代码

克隆完成后导入Git库里的项目,也就是云效自动创建的模板应用,导入后,将《使用 Spring Tool Suite 快速开发 EDAS HSF 服务》里创建的HSF服务应用手工Merge进来。

编辑release文件

注册应用时,云效自动生成了release文件,在项目里我们需要确认这里的配置是否正确,需要注意以下两个配置项。

# 构建打包使用的打包文件
build.output=target/SimpleStore-0.0.1-SNAPSHOT.jar

# 该配置项会避免云效对build.output中的产物再进行压缩(EDAS部署需要此配置项)
build.output.nottgz=True

5、云效-查看和编辑流水线

注册应用后,云效会自动创建一条默认的流水线,包含了构建 > 部署到测试环境 > 部署到预发环境 > 部署到正式环境这几个步骤,本文只有测试环境,因此需要编辑流水线来删除部署到预发环境和部署到正式环境这两个阶段。当然在编辑流水线页面上,也可以加入新的阶段和每个阶段的任务,以及配置监听、流转条件(手动和自动)等,编辑页面如下图所示。

编辑流水线

DevOps实践中的研发、持续集成、自动化测试、持续部署和发布都可以在流水线中自动化流转,可以说流水线在真正意义上实现了DevOps过程的一体化,体现了敏捷、高效的精神。

6、IDE-提交代码,云效-触发流水线,EDAS-部署运行

提交代码

所有步骤完成之后,可以在本地IDE中提交代码,提交成功后,可以在阿里云GitLab的Commits记录里看到提交的记录,本例子里,将Ping页面加了个字符串,以便直观的体验应用更新的变化。

commits change

触发流水线

云效在监听到代码改变后,会自动触发流水线进行构建,在本示例中跳过了测试阶段,真正实用角度来说,任何应用需要测试通过后,才可以被发布。下图是流水线执行成功的示意图,注意看到Commit号与之前Git库的变化历史是一致对应的。

触发流水线

部署运行

流水线成功执行后,可以到阿里云的控制台中查看EDAS的运行情况,在变更记录中记录了流水线执行部署的事件。

EDAS变更记录

通过浏览器检查Ping页面,发现应用已经被成功更新,如下图所示:

更新页面

本文通过一个简单的EDAS HSF服务应用开发,介绍了云效和EDAS容器集群在实际研发过程中的结合使用方法。这两者的结合极大程度的提高了应用研发的敏捷性,真正实现了DevOps的持续集成、持续部署发布的理念。当然也希望公有云云效能提供更多、更完善的支持,例如EDAS Kubernetes集群的部署,更多的编译构建器等等。

相关实践学习
微服务实战-服务注册中心 - Nacos
Nacos是阿里巴巴于2018年7月发布的一个开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务的发现、配置和管理: Kubernetes Service  gRPC & Dubbo RPC Service  Spring Cloud RESTful Service  
目录
相关文章
|
敏捷开发 安全 测试技术
阿里云云效产品使用合集之云效安全白皮书在什么地方可以查看
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
DevOps实践中,如何平衡开发速度和安全审核的效率
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
在DevOps实践中,为平衡开发速度与安全审核效率,可采取自动化安全测试、安全编码实践、持续监控与日志分析、集成安全工具、合规性代码审查、基础设施即代码、权限和访问控制、安全培训、漏洞及补丁管理和持续反馈改进等措施,确保高效安全的开发流程。
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率?
DevOps实践中,如何平衡开发速度和安全审核的效率?
|
运维 Devops 持续交付
自动化运维之路:从脚本到DevOps探索后端开发:从基础到高级实践
【8月更文挑战第28天】在数字化时代的浪潮中,企业对于IT运维的要求越来越高。从最初的手动执行脚本,到如今的自动化运维和DevOps实践,本文将带你领略运维的演变之旅。我们将探索如何通过编写简单的自动化脚本来提升效率,进而介绍DevOps文化的兴起及其对现代运维的影响。文章将为你揭示,通过持续集成、持续部署和微服务架构的实践,如何构建一个高效、可靠的运维体系。准备好让你的运维工作变得更加智能化和自动化了吗?让我们一起踏上这段旅程。 【8月更文挑战第28天】 本文旨在为初学者和有一定经验的开发者提供一个深入浅出的后端开发之旅。我们将一起探索后端开发的多个方面,包括语言选择、框架应用、数据库设计
|
敏捷开发 运维 Devops
DevOps文化:打破开发与运维之间的壁垒
【8月更文挑战第14天】DevOps文化是现代软件开发和运维的重要趋势之一。通过打破开发与运维之间的壁垒,实现自动化、持续集成/持续部署以及紧密协作等关键实践,可以显著提高软件交付的质量和效率。对于任何希望在数字化时代保持竞争力的企业来说,拥抱DevOps文化无疑是一个明智的选择。
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
364 0
|
前端开发 Devops 持续交付
【前端自动化新高度】Angular与Azure DevOps完美结合:从零构建持续集成与持续部署的全自动流水线,提升开发效率与软件交付质量!
【8月更文挑战第31天】Angular作为领先的前端框架,以强大功能和灵活性深受开发者喜爱。Azure DevOps提供一站式DevOps服务,涵盖源码管理、持续集成(CI)及持续部署(CD)。本文将指导你如何在Azure DevOps中搭建Angular项目的CI/CD流程,并通过具体示例代码展示整个过程。首先,我们将创建一个Angular项目并初始化Git仓库;然后,在Azure DevOps中设置CI流水线,定义YAML文件以自动化构建和部署流程。最终实现每次提交代码后自动构建并部署至Azure Web App,极大提升了开发效率和软件交付速度,使团队更专注于创新。
377 0
|
敏捷开发 存储 测试技术
阿里云云效产品使用合集之如何查看云效管理员
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。