Azure云中Web应用的持续集成实践

简介:

由于从事的工作领域关系,目前会或多或少的关注DevOps课题的相关领域,当然目前还在尝试多种适应于持续开发持续集成领域的工具和组合方式,个人粗浅的领会是DevOPS其实既不会只是开发者需要关注的,也是运维人员应该关注的领域,因为未来的IT世界其实是个"相对混合"的空间,发展之快超出想象;在开发测试领域的工具上看,Chef/Puppet/PowerShell DSC,到开源领域广泛应用Salt Stack, Ansible到 Docker生态圈等封装一系列基础架构即代码等概念的涌现,无时不刻的不在提醒我们演进背后的力量的本质,是业务对IT系统的能力持续提高,举例来说需要通过持续开发,持续集成的方式实现应用功能,代码迭代更新敏捷性的快速提升;为了实现这些目的,大量的互联网公司已经开始率先进行了实践,当然不一定是全栈的实践;但是至少在某些领域已经积累了大量的经验,并且开始向下一个拆分大的应用结构到细微Restful API结构,独立运维和扩展,并且通过网关集群来交付的微服务结构;在这样大的领域变革激荡的演化过程中,对于开发运维环境的改变不能原地踏步,逆水行舟不进则退;如果现在还仅仅满足于点几下鼠标或者期望在复杂的IT系统中探索标准化IT服务,显然有些落伍;这可能不是"生存"或是"毁灭"的问题,这是一个博弈才有机会参与的时代,所以愿意或者不愿意,身为IT从业者可能都不得不去开始探索和学习的。最初的持续开发和集成的实践,我觉得先要从工具选择上开始;要想做到高度自动化必须从大道至简的原则出发,开发,过渡环境及生产环境的产生和变更,可以根据代码Build版本控制变更或初始化触发的发布流程,辅以一套参数化结构通过简单声明式的封装(类似开源领域的yml文件,PowerShel DSC的配置文件,亦或是Azure中的ARM模板,亦或是Dockerfile当然也可能是Chef 的菜单rb配置),通过标准化的Provider驱动对于配置的跨环境标准化执行流程;一个持续集成的雏形就出来了;逐步到上层结构辅以审批,资源注册,生命周期管理及跟踪等,那么一个较为丰富的开发测试DevOps技术工具栈逐渐补全了;最后就是从应用开发端逐渐向微服务架构设计演进的过程;最终需要实现的效果自然是将持续开发,持续集成;适应业务快速的扩展和功能的迭代,减少由于基础结构性是失却,配置变更不到位或者大规模的回归性测试造成的整体回滚等一系列问题引发的对业务端的拖累和影响;所以其实挑战也是机遇,为什么曾经一度淘宝业务系统蓬勃发展也带动了的各路“花名在册”的大神风起云涌,为啥现在开源时代又造就了那么多的大师?为啥现在身为一个IT的运维人员推崇却是Python等语言和框架?这一切背后的力量作为从业者感受到了吗?如果是,那么勇敢的人总会有机会尝试并最终站在结构性的高峰的,总之,我信了...


言归正传,这里以Azure国际版为例;试图描摹一个简单的持续集成的过程实践,该过程将从本地Git或GitHUB源代码控制和存储库工具持续集成Web应用发布更新到Azure中,当然利用Azure也可以在生产和过渡环境切换回滚;需要说明的是Azure公有云发展非常迅速,除了这里所用到的网站应用以外,对于移动应用,API应用甚至是微服务逻辑应用均可以借助微软的App Service与包括上述Git源码控制库之外的如Codeplex,TFS,Bitbucket等集成。

步骤1,在本地完成

首先,我们先要确保本地的Git环境已经可用,根据你的系统是Windows还是MAC的选择相应的Git客户端。

接下来,打开本地的Git环境,Windows的可以直接用GitBash

创建我们的测试WEB项目目录,进入并初始化本地Git库,

cd C:\Users\shzhai.FAREAST\Documents\GitHub\TestWebCIRepo

git init

我们的项目做个最简单的就好,力求只是为了测试代码发布和持续集成过程,所以这里我们先在项目里创建一个默认静态页面,

echo "My Demo page!" > .\index.html

现在添加页面到本地的Git库中,

git add .\index.html

我们提交改变并添加注释到本地库,

git commit -m "Add the first static page to local repo!"

步骤2,在Azure端设置Web应用库

首先,我们在Azure国际版的新门户中,添加一个Web应用MyCIWebDemo;

选择持续集成,选择源为本地Git存储库,

接下来设置需要持续部署的用户凭据,

步骤3,现在开始部署本地的测试项目到Azure Web应用;

首先在部署区域,我们还没有看到本地Git库的部署;

接下来,我们选择Web应用属性或点选部署,进入到属性设置选择Azure的远程Git部署URL,

我们现在来到本地Git控制台,添加刚刚复制的Azure远程Git URL并制定远程Git连接名为Azure;

git remote add azure https://shawnzhai@myciwebdemo.scm.azurewebsites.net:443/MyCIWebDemo.git

接下来我们把本地的master版本代码推送到Azure远程Git端,输入我们之前设置的用户部署凭据;

git push azure master

我们可以在Azure的Web应用的部署中看到刚刚推送的部署;

点击部署链接,我们就可以看到刚刚部署的静态页面显示了;

现在我们在本地项目目录修改静态页面;

echo "<h2>New CI Demo!</h2>" > .\index.html

git add index.html

git commit -m "Check in New Page"

git push azure master

再次来到Web页面查看,Dida,已经改变过来了;实际环境集成会增加部署槽进行过渡测试;这个部分我们将再另文介绍;

最后,我们再体验一下通过Azure Web应用与GitHub而不是本地Git库的持续集成;如果不仅仅是本地开发项目,而是团队协作的项目版本发布到GitHub上,持续集成的好处是协作项目无论谁最终做的更新操作,那么只是与GitHub库中最新的项目版本集成发布到Azure云中。

首先将代码托管到GitHub中,

接下来我们需要在Azure Web应用持续集成端选择GitHub;

选择授权,并重定向到Github允许Azure的到Github的代理授权访问;接下来选择GitHub组织用于项目选择;

接下来选择需要部署的GitHub项目和分支设置;

当我们确认之后,可以在通知区域看到部署过程;Azure将从GitHub项目分支中Checkout并进行部署;

查看部署效果并验证;

结语,其实开发测试环境持续集成是个非常大的课题,涉及到人,流程,工具等一系列内容;本文这里只是探索了冰山一角,但是工欲善其事必先利其器,Azure公有云结构在设计时就充分考虑到对持续开发集成,部署等一系列相关问题,在工具端力求兼容与尽善尽美;让我们继续慢慢探索吧!










本文转自 翟老猫 51CTO博客,原文链接:http://blog.51cto.com/3387405/1693917,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
人工智能 自然语言处理 安全
代码静态扫描工具集成与实践
代码静态扫描工具(Static Application Security Testing, SAST)是在不运行代码的情况下,通过分析源代码或二进制代码来发现潜在安全漏洞、代码缺陷和质量问题的工具
1181 4
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
10月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
774 6
|
10月前
|
安全 JavaScript 前端开发
安全漏洞检测集成及实践:SAST/DAST工具集成指南
通过合理集成和配置SAST/DAST工具,可以显著提升应用程序的安全性,并在开发早期发现和修复漏洞,降低安全风险和维护成本
1208 4
|
10月前
|
机器学习/深度学习 边缘计算 数据可视化
MyEMS 深度解析:碳管理赋能与系统集成的实践路径
MyEMS 是一款集碳管理与能源优化于一体的开源系统,具备多标准碳核算、碳足迹可视化、碳成本分析等功能,助力企业实现精准碳减排。系统支持与工业、建筑、政务平台等多系统集成,打破数据孤岛,提升能效。依托活跃的开源社区与丰富实践案例,MyEMS 持续迭代,推动绿色转型。
668 1
|
11月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1797 1
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
1361 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
11月前
|
供应链 监控 搜索推荐
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
在零售行业环境剧变的背景下,传统“人找货”模式正被“货找人”取代。消费者需求日益个性化,购买路径多元化,企业亟需构建统一的指标体系,借助BI平台实现数据驱动的精细化运营。本文从指标体系构建、平台集成到会员与商品运营实践,系统梳理零售经营分析的方法论,助力企业实现敏捷决策与业务闭环。
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
|
机器学习/深度学习 数据采集 存储
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
本文探讨了朴素贝叶斯算法在处理混合数据类型中的应用,通过投票和堆叠集成方法构建分类框架。实验基于电信客户流失数据集,验证了该方法的有效性。文章详细分析了算法的数学理论基础、条件独立性假设及参数估计方法,并针对二元、类别、多项式和高斯分布特征设计专门化流水线。实验结果表明,集成学习显著提升了分类性能,但也存在特征分类自动化程度低和计算开销大的局限性。作者还探讨了特征工程、深度学习等替代方案,为未来研究提供了方向。(239字)
350 5
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。