云时代,你还在做繁重的手工部署操作吗?

(本文阅读时间:7分钟)
开发者一定是同学亲友眼中的电脑高手。日常买电脑、配电脑,大家会找你;做系统,装软件,大家还会找你。于是你在生活中练就了一身“双击……下一步……下一步……下一步……立即重启”的软件快速安装技能。

是时候改变一下了!

细看会发现,DevOps可以划分成很多部分,包括沟通协作/任务管理、持续集成/持续部署、代码管理、基础设施即代码、持续监控等。随着时机的成熟,市场的教育普及与工具链的成熟度越来越高,很多企业也实实在在看到了DevOps的价值。有数据显示:采用或部分采用DevOps的公司,发布频率提高了46倍,Bug修复时间提升了440倍,可以提前20%将产品推向市场,出错率减少5倍,收入增加了20%。
如此神技能当然值得每位开发者学习。而以予力开发者为己任的微软也适时推出了相关服务:Azure DevOps。
Azure DevOps是微软提供的,用于帮助开发者实现DevOps文化的工具集合,包含Azure Boards(看板,实现任务管理)、Azure Pipelines(持续集成/持续发布)、Azure Repos(代码管理)、Azure Test Plans(测试计划管理)、Azure Artifacts(包管理)等在内的全套工具链。

借助Azure DevOps,用户能够快速开始实践DevOps理念,而无需在意工具的选择以及支持DevOps的基础设施的维护,将精力专注于业务的开发。
Azure DevOps除了支持内置工具集,还支持很多开源工具,用户可以结合自身的实际情况来选择适合自己的工具。

接下来,我们将通过一个案例模拟DevOps的持续集成/持续发布(CI/CD)过程,体验如何通过Azure DevOps将手工的网站更新操作自动化。
例如一家公司运行着一个Python编写的公司门户,虽然内容不多,但是需要经常修改页面内容。
小A是网站开发人员,小B是网站运维人员。每次更新内容后,小A都需要将改好的代码上传到GitHub,小B拉取并手动更新到对应的Web服务器中。这一过程不仅需要大量手工工作,而且时不时会出现问题,导致公司网站无法访问。
接下来,我们尝试将这个场景应用在Azure DevOps中通过Pipelines实现程序自动化发布。随后,小A只需将代码上传到GitHub,就会自动触发一整套部署流程,部署到预生产环境,且增加了代码检查与同事核查,确保了发布的准确性;而小B可以专心维护Azure DevOps Pipelines,确保运行的准确性,而无需手工完成部署任务。
在我们构想的这个场景中,经过DevOps的改造,原本耗时1小时的构建/发布过程可以缩短到5分钟!这极大提高了工作效率,同时可以将人为失误风险降到最低。
创建一条AzurePipeline for CI工作,名为zjPythonWeb-CI
1、点击“New pipeline”,设置源代码管理的GitHub链接,选择创建一条空的Pipeline。


选择Build所需的Build Agent Pool:

2、添加Build Pipeline的一系列任务
添加任务设置Build Agent上运行的Python版本:

添加任务安装PythonWeb必要的依赖项,所有依赖项均放在GitHub中的requirements.txt内:

添加任务运行必要的单元测试,所有测试的相关用例均存放在GitHub中的unit_tests内:

添加任务将测试结果发布到Azure Pipeline中的Test Tab:

接下来的三个任务会将PythonWeb代码打包成ZIP文件,发送到Azure DevOps Artifact中,为后续部署工作做准备


最后收尾,设置好CI Pipeline的触发规则,达到持续集成的目的:


创建一条Azure Pipeline for CD工作,名为zjPythonWeb-CD
1、点击Pipeline - Releases创建一条部署的Pipeline:
添加CI Pipeline构建的Artifact

2、添加Release Pipeline部署过程的一系列任务
添加任务在Azure App Service中安装必要的Python Extension插件

添加任务将Build好的ZIP包发布到预先创建的Web App中


步骤中需要设置Generate web.config parameters,具体代码如下
-WSGI_HANDLER "django.core.wsgi.get_wsgi_application()" -DJANGO_SETTINGS_MODULE "python_webapp_django.settings" -PYTHON_PATH "$(AzureAppServiceManage2.LocalPathsForInstalledExtensions)python.exe" -PYTHON_WFASTCGI_PATH "$(AzureAppServiceManage2.LocalPathsForInstalledExtensions)wfastcgi.py" -appType python_Django
步骤中需要设置的Deploy脚本如下
@echo off
if NOT exist "$(AzureAppServiceManage2.LocalPathsForInstalledExtensions)/python.exe" (
echo Python extension not available >&2
EXIT /b 1
)
echo Installing dependencies
call "$(AzureAppServiceManage2.LocalPathsForInstalledExtensions)/python.exe" -m pip install -U setuptools
call "$(AzureAppServiceManage2.LocalPathsForInstalledExtensions)/python.exe" -m pip install -r requirements.txt
添加任务添加一系列测试任务,确保部署的工作是正常运行的

接下来我们试验一下Pipeline zjPythonWeb-CD是否工作正常,从结果看起来一切正常

接下来,小A如果需要更改页面内容就简单多了,他只需要更改页面代码,提交到GitHub即可;Azure Pipeline会监听GitHub的Commit,触发CI/CD操作:





经过上述操作,我们就成功地利用Azure DevOps实现了自动化部署流程,以及测试与生产环境的隔离,希望对大家的日常工作有所帮助。
想了解 Azure DevOps 更多在线课程,请点击文末阅读原文,即刻报名!






Surface 新品预购,惊喜好礼相随!
AI商学院 | 一场读书会带你了解微软登顶市值巅峰11450亿美元的秘密
美女与IT兽视频 | 释放大数据生产力
最新活动

关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 中法元首相会都江堰 7904756
- 2 中方不接受日方所谓交涉 已当场驳回 7809129
- 3 大闸蟹为何会在欧美泛滥成灾 7712254
- 4 国际机构看中国经济 关键词亮了 7616895
- 5 家长称婴儿被褥印不雅英文单词 7521856
- 6 日方军机滋扰擅闯或被视为训练靶标 7424945
- 7 长沙一男子要取现20万 银行紧急报警 7332376
- 8 国乒8比1击败日本队 11战全胜夺冠 7232737
- 9 日军机滋扰辽宁舰训练 中方严正交涉 7141391
- 10 千吨级“巨无霸”就位 7044480


![董萌萌呀悄悄告诉你该换壁纸啦[挤眼]#随手拍一夏# ](https://imgs.knowsafe.com:8087/img/aideep/2022/5/30/43051e33d652ef2c5165aacf418d3b99.jpg?w=250)




微软科技
