使用 VSTS 为 ASP.NET Core 构建 DevOps CI/CD 管道





5.00/5 (11投票s)
本文主要介绍如何使用 VSTS 创建新的生成和发布定义。文章简要介绍了 DevOps、持续集成、持续交付和持续部署。
引言
基于 Web 的应用程序使我们的工作更加轻松。特别是当我们只需要屏幕之间的交互时,我们可以考虑单页应用程序 (SPA)。对于 SPA,我们可能需要 webpack、grunt 或 gulp 等工具来合并和打包我们的客户端脚本。单击此处了解基础知识。假设我们使用 ASP.NET Core,那么我们可能需要使用 npm、bower 或 yarn 等工具来管理包,以便我们能够恢复包并编译我们的应用程序。但是,如果您没有自动化的 CI/CD,那么首次部署单页应用程序也很困难。在本文中,我的主要重点是向您展示如何使用 VSTS 为您的 ASP.NET Core 应用程序创建生成和发布。
覆盖主题
- 单体架构和微服务架构
- 敏捷和 DevOps
- 持续集成
- 持续交付
- 持续部署
- 使用 VSTS 创建项目
- 创建新的生成定义
- 使用 webpack 打包脚本
- 创建新的发布定义
让我们深入了解基本概念
单体架构和微服务架构
曾经有一段时间,单体架构是一种常见的做法,瀑布模型也很流行。在这种方法论中,一切都被视为一个大型项目,这是一个结构化和顺序化的过程。现在,它被分解成小的部分,并且是迭代的。是的,我指的是微服务架构和敏捷方法论。
敏捷和 DevOps
我们知道敏捷是一种开发方法论。DevOps 这个词本身就是敏捷的扩展,它主要侧重于从开发过程到生产支持。我们可以说,这是软件开发和运维的结合。
DevOps 背后的驱动力
当我们谈论 DevOps 时,经常会出现这些术语
- 持续集成 (CI)
- 持续交付 (CD)
- 持续部署 (CD)
持续集成
开发人员一天多次将代码检入/提交并合并到共享存储库(Git、Team Foundation 版本控制等),并且在代码合并后,会自动生成并运行自动化测试。
持续交付
代码集成后,代码将经过生成和测试。现在,它已准备好将代码推送到暂存环境(非生产测试)或生产环境,但您需要手动批准才能推送。
持续部署
代码集成后,代码将经过生成和测试。现在,无需任何批准,它将自动推送到暂存环境(非生产测试)或生产环境。
使用 VSTS 为 ASP.NET Core 应用程序进行自动化 CI
先决条件
您需要一个Visual Studio Team Services 帐户和一个Git 帐户。还没有?您可以从 https://www.visualstudio.com 和 https://github.com 创建一个新的免费帐户。
使用 VSTS 创建团队项目
- 选择 项目 > 新建项目。
- 为项目提供一个名称,并为您的项目选择正确的版本控制 Git 或 TFVC。选择一个工作项流程。单击 创建 按钮来创建项目。
- 单击 在 Visual Studio 中克隆。
- VS IDE 将弹出一个窗口。单击“克隆”按钮。
- 选择 团队资源管理器,然后单击 创建新项目或解决方案。
创建项目后,您需要提交所有更改。单击 团队资源管理器 > 更改。填写更改说明,然后单击 全部提交。
- 单击 同步 以同步代码。
- 最后,单击 发布(传出提交 > 发布)。
为 ASP.NET Core 应用程序创建新的生成定义
- 选择 生成和发布 选项卡,然后选择 生成。
- 选择 新建 来创建新定义。
- 选择项目、存储库、分支,然后单击 继续。
- 根据您的项目类型选择生成模板。我选择 ASP.NET Core (.NET Framework),然后单击 应用 按钮来创建生成定义。
- 选择 进程 任务,并填写生成定义的名称(例如,
HelloWorld-Dev
,我们将在发布中使用此名称)。为要运行生成的默认代理选择 托管 VS2017。如果您使用的团队使用 Visual Studio 2017,则选择 Hosted VS2017,因为它具有 .NET Core 框架和其他构建项目所需的组件。如果您使用的团队在 Ubuntu 上使用开发工具,则选择 Hosted Linux。如果您使用的团队使用 Visual Studio 2013 或 Visual Studio 2015,则选择 Hosted。
为“解决方案或 packages.config 路径”选择项目解决方案文件,并填写 生成件名称。
- 选择 获取源 任务,并检查正确的项目、存储库和分支。选择 clean: true 和 clean options: sources。Tag sources: Never。Report: build status。
- 在阶段 1 中选择 生成解决方案 任务。选择 Visual Studio 版本:最新。MSBuild 体系结构:选择 X64 或 X86,适合您的那个。
使用 Webpack 生成和打包应用程序
- 我们需要添加
npm
来安装项目中使用的所有包。要添加npm 任务
,请单击阶段 1 右侧的 (+) 添加任务,然后选择包。查找并添加npm
任务。现在,将npm
任务拖放到 生成解决方案 之前。如果您使用 Bower 而不是npm
,那么您需要添加 Bower。现在选择
npm
任务,并选择 命令:install
。现在,对于“包含 package.json 的工作文件夹”,请选择包含 package.json 文件的主要项目的根文件夹。选择 自定义注册表和身份验证注册表 > 要使用的注册表:我的.npmrc
中的注册表;高级 > 详细日志记录:已选中;控件选项 > 已启用:已选中。 - 接下来,我们将需要 PowerShell 脚本 任务来编译我们的客户端脚本。在这里,我们将安装 webpack 并使用 webpack 编译 JavaScript。选择 (+) 添加任务,然后在生成部分中查找 PowerShell。将其添加到生成定义中,放在
npm install
和 生成解决方案 任务之间。填写以下信息
- 显示名称:PowerShellScript
- 类型:内联脚本
- 内联脚本
(Get-Item -Path ".\" -Verbose).FullName $env:Path=[System.Environment]::GetEnvironmentVariable("Path","Machine")+";"+ [System.Environment]::GetEnvironmentVariable("Path","User") Get-Command -CommandType Application -ErrorAction SilentlyContinue -Name webpack | Select-Object -ExpandProperty Definition | echo npm install -g webpack --no-optional node_modules\.bin\webpack -p
- 高级 > 工作文件夹:包含 webpack.config.js 文件的 Web 应用程序的根文件夹。
- 在标准错误上失败:已选中
- 控制选项:已选中“启用”和“出错时继续”
- 运行此任务:仅当所有先前的任务都成功时。
- 选择 触发器 选项卡并选择以下信息。
- 启用持续集成
- 生成进行中时批处理更改
- 分支筛选器 > 类型:包含 & 分支规范:例如,dev 或 qa 或 master
- 选择 选项 选项卡并选择以下信息。
- 新生成请求处理:已启用。
- 自动链接此生成中的新工作:已启用。
- 仅链接到添加到指定分支的工作 > 类型:包含;分支规范:例如,dev。
- 您还可以更改生成作业的默认值。
- 最后单击 保存并排队 > 保存 以保存生成定义。
现在我们有了自动化的 CI 生成,如果您将代码更改提交到您选择的分支,您将看到以下输出……。
创建新的发布定义
- 转到 生成和发布 选项卡 > 发布 > 新建定义。
注意:如果您已有现有发布,请选择加号 (+) 并选择 创建发布定义。
- 选择一个模板:IIS 网站和 SQL 数据库部署。
- 您将看到一个环境窗口。现在从属性中更改 环境名称。
- 在“生成件”面板中,选择 +添加,然后选择项目、源(生成定义)、默认版本和源别名。单击 添加 按钮。
- 单击闪电图标以触发持续部署,然后在右侧启用它。如果您希望在源生成件的新版本可用时创建新发布,则需要此项。单击 添加 按钮并选择类型和生成分支。
- 单击 环境 的闪电图标,然后
- 选择触发器:发布后
- 生成件筛选器:已启用
- 选择 + 添加 > 生成件名称(例如,
HelloWorld-Artifact-Dev
) - 类型:包含;生成分支:例如,Dev;生成标记:留空。
- 在浏览器左侧,选择 任务,或从“环境”面板中选择任务(2 个阶段,2 个任务)。这些任务将执行您的部署过程。
- 现在选择 任务 > 任务环境(例如,
HelloWorld-Dev-Env
)并填写以下信息- 配置类型:IIS 网站
- 操作:创建或更新
- 网站名称:
HelloWorldApp-Dev
- 应用程序池 > 名称:
HelloWorldApp-Dev
- 单击“添加绑定” > … 按钮。将弹出“添加绑定”窗口并填写信息
- 协议:http 或 https,端口:您的 IIS 分配的端口(例如,543),以及
主机名
:例如,helloWorldApp-dev.yourDomain.com
。
- 单击左侧的 IIS 部署 并选择部署组。
- 选择 IIS Web App Manage 并填写信息
- 物理路径:%SystemDrive%\inetpub\wwwroot\Dev\HelloWorldApp-Dev\
- 物理路径身份验证:应用程序用户(直通)
- .NET 版本:v4.0
- 托管管道模式:集成
- 身份:选择您偏好的身份
- 选择 IIS Web App Deploy 并选中“在应用程序脱机时”。
- 我没有使用 SQL 部署 任务。因此,如果您不需要,可以禁用或删除该任务。选择 SQL Deployment,然后右键单击它以 禁用选定的任务 或 删除选定的任务。
- 最后单击 保存 按钮以保存发布定义。
注意:不要忘记设置您的 IIS 配置。