asp.net - 适用于 ASP .Net 的基本 Azure DevOps 流程
问题描述
我有一种在构建服务器(通常是 Jenkins)上构建和部署我的 asp .net 应用程序的标准工作方式。我有一个自定义构建脚本和发布配置文件,用于构建我的解决方案、复制一些文件并发布 Web 项目,所有这些都只需调用一次 MSBuild。
我正在尝试在 Azure DevOps 中重新创建它。我的第一个障碍似乎是构建和“发布”(或 DevOps 术语中的“发布”)是独立的步骤。但似乎我不需要“发布”?
所以
- 如何控制构建的“工件”文件夹中的内容?是通过 Azure 吗?我可以使用 .MSBuild 文件吗?和
- 我什至需要“发布”的概念还是发布步骤只是将所有工件复制到目标(在这种情况下为 VM)?我可以控制部署的内容吗?
我很难找到某种涵盖以这种方式部署的 asp .net 项目的基本教程。
解决方案
如果您有可用的现有脚本,请使用那些 :)。新的 YAML 构建正在慢慢地从具有大量逻辑的功能齐全的 UI 任务转向执行所需操作的更简单的脚本。
尽管将构建与发布分开是一种常见的做法。这样,您就可以在发布阶段进行额外的检查、审查和批准。
在您的情况下,这意味着:
- 构建阶段
- 使用 MsBuild 以文件夹或 zip 文件的形式构建和创建发布包。
- 使用 Publish Pipeline Artifact 任务存储此文件夹或 zip 文件
- 发布阶段
- 使用下载管道工件任务恢复要发布的文件
- 可以选择使用 Infra as Code 工具来准备目标环境。
- 使用 msdeploy.exe 或其他工具发布包。可以选择生成并传入设置文件以覆盖某些设置。
这样,您可以有多个发布阶段来生成测试环境、临时 POC 环境等,只需使用另一组变量和/或设置覆盖文件。
Azure Pipelines 中有一些特殊任务围绕着这些工具,并提供易于使用的 UI 和一些额外的逻辑。如果您不熟悉命令行工具,这些工具会非常有用。如果您确实知道如何绕过它们,那么可能没有充分的理由使用这些花哨的任务。
推荐阅读
- c++ - Uniform_real 不接受 numeric_limits::lowest()
- php - 如何在 Laravel 中更改密码重置的日期和时间格式?
- android - 如何使用 SEE (SQLite Encryption Extension) 加密数据库?
- python-3.x - 导入 Seaborn 错误 - Numpy_MKL(Python 脚本)
- c++ - 转换 CComPtr
到 LPWSTR*? - mysql - 如何通过sql从查询组中获取结果而不返回重复
- visual-studio - 调试时未找到 BuiltInNUnitRunner.cs
- python - 如何在 spyder 中停止多进程?
- gooddata - 可以为 Treemap 配置不同的图例位置吗?
- elasticsearch - Elasticsearch 给出 [function_score] 格式错误的查询,预期为 [END_OBJECT] 但找到 [FIELD_NAME]