基于Azure DevOps实现持续集成与部署
1. 查看构建输出并下载文件
若要查看构建输出,可点击图12.15中高亮显示的“已发布”按钮。之后,点击图12.16中的“下载”按钮来下载文件。此过程完成后,我们已对管道进行了配置,并手动触发以测试其配置是否正确。
2. 配置和触发自动构建
对于大多数应用程序而言,在Azure DevOps中手动构建可能并非最佳选择。若能为开发者的每次签入/提交自动触发构建过程来配置持续集成,会更为合理。以下是具体操作步骤:
1. 点击“编辑”按钮,导航至AzureFunctions - CI构建定义(如图12.17所示)。
2. 进入构建定义后,点击“触发器”菜单(如图12.18所示)。
3. 勾选“启用持续集成”复选框,以启用自动构建触发器。
4. 点击“保存并排队”按钮旁边的箭头符号,然后在下拉菜单中点击“保存”按钮来保存更改(如图12.19所示)。
5. 打开Visual Studio中的Azure函数项目,对Run函数源代码的最后一行进行小改动。将“hello”替换为“Automated Build Trigger test”,代码如下:
return name != null ? (ActionResult)new OkObjectResult($"Automated Build Trigger test by, { name}")
: new BadRequestObjectResult("Please pass a name on the query string or in the request body");
- 签入代码并将更改提交到源代码管理。点击“全部提交”来提交代码,然后推送所有更改(如图12.20所示)。
- 立即返回Azure DevOps构建定义,可看到一个新的构建已自动触发并正在进行中(如图12.21所示)。
此过程的工作原理如下:
1. 为构建定义启用了自动构建触发器。
2. 对代码库进行更改并签入到Git。
3. 代码提交到Git后,Azure DevOps会立即自动触发新的构建。
3. 在管道中执行单元测试用例
在任何软件开发方法中,编写自动化单元测试以验证代码的正确性是至关重要的步骤。每次开发者提交新代码时运行这些单元测试,以提供测试代码覆盖率也同样重要。以下是在管道中添加运行单元测试用例任务的步骤:
1. 编辑AzureFunctions - CI构建定义,并添加.NET Core任务(如图12.22所示)。
2. 添加任务后,更改任务的以下属性:
- 显示名称:将任务名称更改为“Test”。
- 命令:选择“test”选项,此命令将负责运行单元测试用例。
- 项目路径:提供“ / Test .csproj”或单元测试项目的实际名称。
- 参数:提供“–output publish_output –configuration release”作为构建应用程序的参数。
3. 完成所有更改后,“Test”任务应如图12.23所示。审核无误后,点击“保存”以保存更改。
4. 保存更改后,点击“排队”按钮来排队构建。几分钟后,构建管道将无警告通过(如图12.24所示)。
5. 图12.25展示了测试用例的摘要,显示了通过和失败的测试用例的百分比。
需要注意的是,如果未遵循命名约定,例如为单元项目使用了不同的名称且未在项目名称中包含“test”一词,可能会遇到问题。可参考 文件匹配模式 了解更多信息。
4. 创建发布定义
在了解如何创建构建定义并在Azure DevOps管道中触发自动构建后,下一步是将包发布或部署到一个环境中,以便项目利益相关者进行审查并提供反馈。以下是创建发布定义的步骤:
1. 导航到“发布”选项卡,点击“新建管道”按钮(如图12.26所示)。
2. 选择发布定义模板,在“选择模板”弹出窗口中,选择“将函数应用部署到Azure Functions”,然后点击“应用”按钮。点击“应用”按钮后,会显示一个新的环境(阶段)弹出窗口,暂时关闭该窗口(如图12.27所示)。
3. 点击“工件”框中的“添加”按钮,添加一个新的工件(如图12.28所示)。
4. 在“添加工件”弹出窗口中,确保选择以下内容:
- 源类型:Build
- 项目:源代码关联的团队项目
- 源(构建管道):创建构建的构建管道名称
- 默认版本:Latest
5. 审核页面上的所有值后,点击“添加”按钮添加工件。
6. 添加工件后,配置需要发布包的阶段。点击图12.30中显示的“1个作业,1个任务”链接,并将发布定义的名称更改为“release - def_stg”。
7. 进入“任务”选项卡,在“阶段名称”字段中提供一个有意义的名称,例如“Staging Environment”。选择要部署Azure函数的Azure订阅,点击“授权”按钮提供权限(如图12.31所示)。
8. 授权账户后,在“应用服务名称”下拉列表中会显示所有可用的Azure函数,选择要部署函数应用项目的函数(如图12.32所示)。
9. 点击“保存”按钮保存更改。点击“创建发布”按钮,使用此发布定义尝试创建一个新的发布(如图12.33所示)。
10. 在“创建新发布”弹出窗口中,配置需要使用的构建定义。由于我们只有一个构建定义,选择正确的构建版本,审核后点击“创建”按钮排队发布(如图12.34所示)。
11. 发布创建后,导航到“管道”选项卡,点击“部署”按钮启动发布部署过程(如图12.35所示)。
12. 系统会提示审核关联的工件,审核后点击“部署”按钮(如图12.36所示)。
13. 部署过程立即开始,显示“正在进行中”以指示发布进度(如图12.37所示)。
14. 点击图12.37中显示的“正在进行中”链接,查看实时进度。如图12.38所示,发布过程成功完成。
此过程的工作原理是:在“管道”选项卡中创建了工件和名为“staging”的环境,并将它们关联起来。同时,配置了环境以包含与Azure函数相关的Azure应用服务。首次配置持续部署时,在Azure应用服务部署步骤中可能会遇到“授权”按钮,点击该按钮会弹出一个窗口,提示输入Azure门户的凭据。
5. 自动触发发布
在项目中,可以为开发、预生产等环境配置持续部署,以简化部署过程。但一般不建议为生产环境配置持续部署,需谨慎考虑各种因素和需求。以下是配置持续部署的步骤:
1. 默认情况下,发布配置为手动推送。导航回“管道”选项卡,点击“持续部署触发器”按钮(如图12.39所示)。
2. 启用持续部署触发器,点击“保存”保存更改(如图12.40所示)。
3. 在Visual Studio中进行代码更改,代码如下:
return name != null ? (ActionResult)new OkObjectResult($"Automated Build Trigger and Release test by, { name}")
: new BadRequestObjectResult("Please pass a name on the query string or in the request body");
- 提交代码并添加注释“Continuous Deployment”,将更改提交到Azure DevOps。签入代码后,导航到“构建”选项卡,可看到一个新的构建自动触发(如图12.41所示)。
- 构建完成后,导航到“发布”选项卡,可看到一个新的发布自动触发(如图12.42所示)。
- 发布过程完成后,可使用Postman工具向HTTP触发器发出请求,查看更改结果(如图12.43所示)。
此过程的工作原理是:在“管道”选项卡中启用了持续部署触发器。每次与AzureFunctions - CI关联的构建被触发时,“release - def_stg”发布将自动触发,将最新构建部署到指定环境。我们还通过在Visual Studio中进行代码更改验证了自动发布的效果。此外,还可以创建多个环境,并配置定义以将所需的构建发布到这些环境。
6. 集成Azure Key Vault以配置应用程序机密
在项目中,高效处理机密信息以遵循组织的安全准则至关重要。不建议在代码或开发人员可访问的文件中维护机密(如密码)。Azure中的Key Vault可用于管理机密。以下是集成Azure Key Vault的步骤:
6.1 创建Key Vault服务中的机密
- 创建一个Key Vault服务(如图12.44所示)。
- Key Vault服务创建完成后,导航到“机密”刀片(如图12.45所示)。
- 点击“生成/导入”按钮创建新的机密。
- 为机密提供“名称/值”对。名称是用于引用机密的变量名,值是应用程序中使用的实际机密。提供值后,点击“创建”按钮创建机密(如图12.46所示)。
6.2 配置Azure DevOps发布管道
- 导航到发布管道,点击“编辑”按钮(如图12.47所示)。
- 在“管道”选项卡中,点击链接导航到“任务”选项卡(如图12.48所示)。
- 在“任务”选项卡中,点击“添加”按钮,添加一个任务到管道(如图12.49所示)。此任务将从Key Vault服务下载所有机密,下载的值将作为发布变量创建,可在任何发布步骤中引用。例如,创建了一个名为“Secret1”的机密,可在发布管道的任何步骤中以“$(Secret1)”引用它。
- 在Azure Key Vault任务中,选择服务连接(在“Azure订阅”字段中),选择Key Vault服务的名称,并根据项目要求提供过滤器。提供“*”将下载Key Vault服务中的所有机密。确保将Azure Key Vault任务的顺序调整为在“部署Azure函数应用”任务之前运行(如图12.50所示)。
- 目标是使用机密变量在Azure函数应用中创建应用设置。选择Azure函数任务,导航到“应用设置”部分,添加一个新的键值对(如图12.51所示),将创建一个名为“SecretKeyName”的新应用设置,其值为机密中的值。
- 审核更改后保存。
6.3 配置访问策略
- 导航到“访问策略”刀片,查看当前有权访问Key Vault的策略。需要为发布管道创建的Azure DevOps服务连接提供访问权限(如图12.52所示)。
- 在“访问策略”刀片中,点击“添加访问策略”,在“机密权限”字段中选择“获取”和“列出”,然后点击“选择主体”。
- 在“主体”弹出窗口中,搜索主体名称,其格式为“ - - ”(如图12.53所示)。
- 点击“选择”后,将显示所选权限(如图12.54所示)。
- 点击“添加”,配置Azure DevOps和Key Vault服务之间的权限,点击“保存”按钮保存更改(如图12.55所示)。
通过以上步骤,我们完成了基于Azure DevOps的持续集成与部署流程,包括自动构建、单元测试、发布定义、自动发布以及机密管理等重要环节,提高了软件开发和部署的效率和安全性。
基于Azure DevOps实现持续集成与部署(续)
7. 流程总结与关键步骤回顾
为了更清晰地展示整个基于Azure DevOps实现持续集成与部署的流程,我们可以通过以下表格来总结关键步骤:
| 步骤 | 操作内容 |
| — | — |
| 查看构建输出并下载文件 | 点击“已发布”按钮查看输出,点击“下载”按钮下载文件 |
| 配置和触发自动构建 | 编辑构建定义,启用持续集成触发器,修改代码并提交触发自动构建 |
| 执行单元测试用例 | 编辑构建定义添加.NET Core任务,配置任务属性,运行测试 |
| 创建发布定义 | 新建发布管道,选择模板,添加工件,配置阶段和任务,保存并创建发布 |
| 自动触发发布 | 启用持续部署触发器,修改代码提交,观察自动构建和发布 |
| 集成Azure Key Vault | 创建Key Vault机密,配置发布管道下载机密,配置访问策略 |
同时,我们可以用mermaid流程图来直观展示这个流程:
graph LR
A[查看构建输出并下载文件] --> B[配置和触发自动构建]
B --> C[执行单元测试用例]
C --> D[创建发布定义]
D --> E[自动触发发布]
E --> F[集成Azure Key Vault]
8. 各步骤技术细节分析
- 自动构建触发机制 :在配置自动构建时,关键在于启用持续集成触发器。当开发者对代码进行提交时,Azure DevOps会检测到这些更改,并根据配置自动触发构建过程。这一机制确保了每次代码更新都能及时进行构建,提高了开发效率和代码质量。
- 单元测试任务配置 :在添加.NET Core任务时,合理配置任务属性是确保单元测试顺利执行的关键。例如,选择“test”命令可以让系统自动运行单元测试用例,而正确设置项目路径和参数则能保证测试覆盖到所需的代码范围。
- 发布定义与环境配置 :创建发布定义时,需要准确选择发布模板、添加工件和配置环境。每个步骤都紧密关联,如选择合适的Azure订阅和应用服务名称,将确保发布的应用能正确部署到目标环境。
- 持续部署触发逻辑 :启用持续部署触发器后,每次相关构建被触发时,发布流程会自动启动。这一逻辑实现了代码从开发到部署的无缝衔接,大大缩短了部署周期。
- Azure Key Vault集成 :集成Azure Key Vault时,创建机密、配置发布管道下载机密以及设置访问策略是保障应用程序安全的重要环节。通过Key Vault,我们可以安全地管理应用中的机密信息,避免信息泄露风险。
9. 实际应用中的注意事项
- 命名约定 :在执行单元测试和其他操作时,遵循命名约定非常重要。例如,单元测试项目的名称应包含“test”字样,这样才能确保系统正确识别和执行测试。
- 权限配置 :在配置发布定义和集成Key Vault时,要确保相关账户和服务连接具有足够的权限。如在Azure应用服务部署步骤中,可能需要点击“授权”按钮来提供Azure门户的凭据。
- 错误处理 :在整个流程中,可能会遇到各种错误。例如,在下载Key Vault机密时,如果权限配置不当,可能会导致下载失败。因此,在操作过程中要仔细检查每一步的配置,及时发现并解决问题。
10. 未来拓展与优化方向
- 多环境部署 :可以创建多个环境,如开发、测试、生产环境,并配置相应的发布定义,将不同版本的构建发布到各个环境中,实现更灵活的部署策略。
- 自动化测试拓展 :除了单元测试,还可以引入集成测试、端到端测试等更多类型的测试,进一步提高代码质量和系统稳定性。
- 安全强化 :不断优化Key Vault的使用,加强对机密信息的管理和保护,同时结合其他安全措施,如网络安全防护,提升整个系统的安全性。
通过以上的操作步骤、技术分析和注意事项,我们可以更深入地理解基于Azure DevOps的持续集成与部署流程,并在实际应用中灵活运用和优化,从而提高软件开发和部署的效率与质量。
超级会员免费看
81

被折叠的 条评论
为什么被折叠?



