目录

设置项目

创建构建管道

使用TypeScript创建Azure Function

这个怎么运作

发布管道

下一步


下载源文件 - 8.1 KB

云原生开发不仅仅涉及在云中运行代码。正如我们在本系列的第一部分中讨论的那样,具有持续集成和持续部署(CI/CD)的DevOps也是云原生的一部分,尤其是在运行微服务时。

在本文中,我们将专注于CI/CD而不是编写代码。事实上,我们将在编写任何代码之前设置我们的Azure DevOps环境。然后我们将能够在短短几分钟内使用TypeScript设置一个新的Function应用程序,之后我们的代码将在每次推送到我们的Git存储库后自动部署。

设置项目

我们首先需要在Azure DevOps中创建一个Git存储库。此存储库是创建构建管道所必需的。在Azure DevOps中,创建一个新项目,它会自动创建一个我们可以使用的Git存储库,或者将一个新的Git存储库添加到现有项目之一。请务必通过添加README文件或(节点)gitignore文件来初始化存储库。之后,将存储库克隆到您的机器上。

接下来,我们将需要Azure中的Function应用。进入Azure门户,添加新资源,然后搜索“Function”。为了稍后快速清理,请将您的新功能应用程序放在一个新的资源组中,您可以在打开的刀片中创建该资源组。Function App的名称在Azure中必须是唯一的。

由于Function是无服务器的,因此您需要一个存储帐户来存储您的代码。使用专用存储帐户是一种很好的做法,因此请在Create Function App中创建一个新帐户。消费计划是无服务器计划。请注意,您可以在常规托管计划上运行您的Function,但这会限制您的扩展选项。您可以选择Linux或Windows作为您的操作系统,但我们在本示例中选择了Linux。接下来,禁用Application Insights。

接下来,单击创建并等待您的Function应用程序被供应。

请注意,虽然这是创建Function应用程序的最简单方法,但它可能并不总是最佳选择,因为它仍然需要手动工作。

创建构建管道

现在,回到Azure DevOps。我们将在此处创建管道以构建、测试和部署我们的项目。转到管道并单击新建管道。我们将使用Azure Repos Git选项,但请注意,您也可以使用其他Git源,例如GitHub,它会引导您完成授权过程,但其他方面的工作方式完全相同。

选择Git存储库后,选择一个管道模板。您将找到一些适用于ASP.NET Core(和.NET Framework)、Node.js、Android和Ant的模板。单击“显示更多”时,您会发现C/C++、Go、Python、PHP等更多模板。

我们正在寻找的是Node.js Function App to Linux on Azure。单击它会提示您输入Azure订阅和Function应用程序。因此,选择您的订阅和我们刚刚创建的Function App。

之后,您将获得一个YAML脚本,该脚本描述了将代码部署到Azure Function所需的步骤。我们现在不必更改它,因为它可以使用默认的Node.js Azure Function模板开箱即用。稍后我将详细介绍一些细节。首先,让我们通过将一些代码部署到Azure来验证它是否有效。

使用TypeScript创建Azure Function

使用TypeScript创建Azure Function的最简单方法是使用Visual Studio Code。安装Azure Functions扩展,然后转到新添加的Azure页面。

在那里,单击右上角的创建新项目。

选择一个文件夹:您在设置此项目时克隆的存储库。

之后,选择您的语言:TypeScript。

选择HTTP触发器,为其命名(或保留默认的HttpTrigger1),然后按Enter。

对于授权级别,选择Function。

最后,选择在当前窗口中打开您的项目。这可能会提示你安装一些你应该接受的其他Azure Functions扩展。

一旦这一切都完成了,一个新的功能就搭建好了。通过按F5或从“运行”菜单中选择“开始调试”来检查它是否运行。你会看到终端中发生了一些事情,最后你会看到:

[Function name]: [GET,POST] http://localhost:[port]/api/[Function name]

在浏览器中打开链接,您应该看到“此HTTP触发的Function执行成功。在查询字符串或请求正文中传递名称以获得个性化响应。”

因此,在URL末尾添加类似“?name=Bill”的内容,您现在应该会看到“Hello, Bill。此HTTP触发的Function已成功执行”。这意味着一切正常。

现在,是时候提交代码并将其推送回Azure DevOps并观看奇迹发生了!转到您的构建管道,您应该会看到几个绿色检查,表明一切顺利。若要检查您的代码是否实际正确运行,请转到Azure门户并找到您的Function应用。单击Function并选择您的Function。在这里,单击Code + Test然后单击Get function URL并复制URL(它有一个代码,这是我们添加的Function授权,因此不是任何人都可以调用您的Function)。结果应该与您在本地运行时的结果相同。

恭喜,您刚刚自动构建并部署了您的TypeScript Azure Function!

这个怎么运作

那我们刚刚做了什么?

首先,当我们在Azure DevOps中创建管道时,我们创建了一个推送到我们的Git存储库的YAML文件。这个YAML文件描述了构建、测试和部署我们的代码的步骤。Azure DevOps可以读取和执行它。例如,以下命令告诉Azure DevOps在将某些内容推送到我们的主分支时开始执行:

trigger:– main
重要部分在以下部分:
steps:
- task: NodeTool@0inputs:versionSpec: '10.x'displayName: 'Install Node.js'- script: |if [ -f extensions.csproj ]thendotnet build extensions.csproj --runtime ubuntu.16.04-x64 --output ./binfidisplayName: 'Build extensions'- script: |npm installnpm run build --if-presentnpm run test --if-presentdisplayName: 'Prepare binaries'

在这段代码中,我们定义了一些要运行的步骤。第一个任务是使用NodeTool任务安装Node.js。在Azure DevOps中,转到任务上方的设置以获取有关编写YAML脚本的一些视觉帮助。

之后,我们运行两个Shell脚本。如有必要,第一个运行dotnet build命令。第二个运行npm install并运行我们的package.json文件中的构建和测试脚本。同时,默认的Node.js TypeScript Function模板使用来自npm的TypeScript包搭建了一个项目,并构建了一个将我们的TypeScript转换为JavaScript的脚本。

为了简洁起见,这里省略了下一个任务,它将根文件夹放在工件暂存文件夹中的ZIP文件中。之后,工件暂存文件夹作为名为“drop”的工件发布。后续流程可以重用这些工件。

接下来是部署阶段。我们只有一个构建环境,但我们希望最终将我们的功能部署到开发、测试、验收和生产 (DTAP)。因此,为此,我们使用发布管道。您可以完全删除-stage: Deploy代码,但在此之前,请查看AzureFunctionApp@1任务设置。当我们构建发布管道时,我们将使用完全相同的步骤。

发布管道

转到Azure DevOps中的发布。不幸的是,发布管道不适用于YAML脚本,因此我们必须单击此处。

首先,创建一个新的发布管道。当提示输入模板时,选择:将Function应用部署到Azure Functions。

将您的管道重命名为“TypeScript Function release”之类的名称。

接下来,将“Stage 1”重命名为“Development”。

单击添加工件,然后从您的项目中选择Function App构建。通过工件上的闪电按钮启用持续部署。

接下来,转到您的任务。在开发部署过程中,选择一个Azure订阅,将应用类型设置为Linux上的Function应用。

对于您的应用服务名称,设置$(AppServiceName)。 “AppServiceName”是我们可以为每个环境设置的变量,因此我们可以在设置时为我们的测试环境指定不同的名称。

在Run on agent下,将Agent Specification设置为ubuntu-20.04。部署Azure Function App实际上与我们在YAML脚本中的任务相同,如AzureFunctionApp@1

接下来,转到变量并添加“AppServiceName”。对于value,输入应用服务的名称并将其设置为Development作用域。

保存,然后运行您的管道。如果一切顺利,您的Azure Function URL仍然有效。

现在可以克隆Development阶段并将克隆重命名为“Test”。然后,您可以在Test作用域内为您的变量指定另一个名称。然后,您的开发和测试版本将使用相同的工件,由相同的构建创建,但会将您的代码部署到另一个Azure Function应用程序。但是,我们暂时不会克隆到新环境。首先,我们将向管道添加一些额外的步骤,如下一篇文章中所述。

下一步

使用TypeScript创建和部署Node.js Function应用程序很容易,只需几分钟即可完成。默认模板实际上提供了良好的基础。

在本系列的下一部分中,我们为Function App添加后端,并将DTAP添加到我们的发布管道,将我们的Function App变成微服务。

https://www.codeproject.com/Articles/5298225/First-Cloud-Native-Steps-Automated-Build-Test-and

第一个云原生步骤:自动化构建、测试和部署(二)相关推荐

  1. OpenKruise - 云原生应用自动化引擎正式开源

    在本次 KubeCon 上,阿里云将为全球用户分享阿里巴巴超大规模云原生落地实践.云原生前沿技术与应用包括OpenKruise 开源项目.开放云原生应用中心(Cloud Native App Hub) ...

  2. 阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon

    在近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践.云原生前沿技术与应用包括 OpenKruise 开源项目.开放云原生应用中心(Clou ...

  3. openkruise 缩容_OpenKruise - 云原生应用自动化引擎正式开源

    2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...

  4. OpenKruise v1.0:云原生应用自动化达到新的高峰

    云原生应用自动化管理套件.CNCF Sandbox 项目 – OpenKruise,近期发布了 v1.0 大版本. OpenKruise [1]  是针对 Kubernetes 的增强能力套件,聚焦于 ...

  5. 云原生下的开发测试实践

    本文整理自阿里巴巴技术专家金戟和砧木的视频分享<云原生下的开发测试>. 测试环境管理之困与阿里巴巴的解决之道 查看全文 http://www.taodudu.cc/news/show-42 ...

  6. 极客星球 | 阿里:云原生数据湖构建与分析实践

    编者按:6月24日[Coder Park]第一季架构篇之大数据平台架构分享线上直播活动圆满结束.本期特邀MobTech袤博科技合伙人.首席数据官杨冠军担当出品人,阿里巴巴计算平台事业部大数据平台技术专 ...

  7. 北斗导航 | 大规模点云地图的自动化构建(高翔:SLAM十四讲)

    大规模点云地图的自动化构建 大规模点云地图的自动化构建视频 作者简介 1.点云地图在自动驾驶中的用途 • 自动驾驶分级 • L4级车辆 • 地图是众多L4级别自动驾驶的必备工具 • 主要的地图指标: ...

  8. 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...

    <ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...

  9. 中秋征文 | 【云原生之Docker】使用docker部署内网穿透工具FRP

    中秋征文 | [云原生之Docker]使用docker部署内网穿透工具FRP 一.卷首语 二.FRP介绍 1.frp简介 2.frp支持的系统 3.本次frp部署目的 三.检查本地docker状态 1 ...

最新文章

  1. 一分钟经理“游戏图”提要
  2. 驳Linux不娱乐 堪比Win平台中十款播放器
  3. 2019-03-09-算法-进化(从排序数组中删除重复项)
  4. 前端学习(3303):函数组件组件子组件useRef聚焦
  5. Spring实战(六)自动装配的歧义性
  6. 【ANSYS命令流】通用后处理技术(一):读取结果文件
  7. HashMap 底层实现原理
  8. 大部分码农辛苦半辈子,还是做不了软件架构师,转行后只能碌碌无为一生?(这是一个交流贴欢迎讨论)
  9. 共探机遇 2018中国产业互联网化纤创新者大会华丽启幕
  10. 3D游戏开发所需的数学基础——矩阵
  11. 谈谈VR游戏中的性能优化
  12. ML-Agents案例之地牢逃脱
  13. 老挑毛 win7 linux,老挑毛u盘启动工具下载
  14. 蜗牛睡眠软件测试准吗,蜗牛睡眠怎么判断深睡 知道深睡方法
  15. 不规则裁剪图片css,使用CSS的clip-path属性实现不规则图形的显示
  16. Redis高可用哨兵Sentinel
  17. pytorch里面nn.Module讲解
  18. 苹果iphone 6s手机测评
  19. 2017年计算机春季高考试题,山东省2017年春季高考数学试题(PDF版,含答案)
  20. 专注云原生落地,星汉未来成为开源 GitOps 产业联盟会员

热门文章

  1. 计算机编程输入3个数排序,汇编语言 输入10个数排序并输出的实现
  2. 内存泄漏的原因及解决办法_探索内存碎片化 - 第288篇
  3. UI设计灵感|这才是分享美图的正确姿势!
  4. 网站界面设计没有灵感,不妨去探索广袤的大自然!
  5. 摄影灵感|轮廓趋势,剪影以一种主要的方式回来了。
  6. sql的的over不能和group by一起使用吧_CellRouter的使用
  7. python 新式类和旧式类_python新式类和旧式类区别
  8. java解析dxf文件_CAD文件无法打开,这两点原因你必须要知道
  9. Python文件管理模块封装,提供大家直接调用(最全最好用)
  10. Linux内核中的同步原语:自旋锁,信号量,互斥锁,读写信号量,顺序锁