以蓝图用户身份使用生命周期管理 - Amazon CodeCatalyst

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

以蓝图用户身份使用生命周期管理

生命周期管理是指能够根据蓝图的更新选项或版本重新生成代码库。这样,蓝图作者就可以集中管理包含特定蓝图的每个项目的软件开发生命周期。例如,将安全修复推送到 Web 应用程序蓝图将允许每个包含 Web 应用程序蓝图或从 Web 应用程序蓝图创建的项目自动获取该修复程序。同样的管理框架还允许您作为蓝图用户在选择蓝图选项后对其进行更改。

对现有项目使用生命周期管理

您可以对根据蓝图创建的项目或未与任何蓝图关联的现有项目使用生命周期管理。例如,您可以将标准安全实践蓝图添加到从未根据蓝图创建的 five-year-old Java 应用程序中。蓝图生成安全扫描工作流程和其他相关代码。现在,每当对蓝图进行更改时,Java 应用程序中的那部分代码库都将根据团队的最佳实践自动保持最新。

对项目中的多个蓝图使用生命周期管理

由于蓝图代表建筑组件,因此在同一个项目中通常可以同时使用多个蓝图。例如,一个项目可以由公司平台工程师构建的中央 Web API 蓝图以及应用程序安全团队构建的发布检查蓝图组成。这些蓝图中的每一个都可以独立更新,并且会记住过去应用于它们的合并分辨率。

注意

作为任意架构组件,并非所有蓝图在一起都有意义或逻辑上可以协同工作,尽管它们仍会尝试相互合并。

处理生命周期拉取请求中的冲突

有时,生命周期拉取请求可能会产生合并冲突。这些问题可以手动解决。后续的蓝图更新中会记住分辨率。

选择退出生命周期管理变更

用户可以从项目中移除蓝图,以取消对蓝图的所有引用并选择退出生命周期更新。出于安全考虑,这不会删除或影响项目的任何代码或资源,包括从蓝图中添加的内容。有关更多信息,请参阅 取消蓝图与项目的关联以停止更新

在项目中重写蓝图的生命周期管理

如果要覆盖蓝图对项目中特定文件的更新,可以在存储库中包含所有权文件。GitLab的代码所有者规范是推荐的指导方针。蓝图始终尊重代码所有者文件而不是其他所有文件,并且可以生成如下所示的示例:

new BlueprintOwnershipFile(sourceRepo, { resynthesis: { strategies: [ { identifier: 'dont-override-sample-code', description: 'This strategy is applied accross all sample code. The blueprint will create sample code, but skip attempting to update it.', strategy: MergeStrategies.neverUpdate, globs: [ '**/src/**', '**/css/**', ], }, ], }, });

这会生成一个.ownership-file包含以下内容的:

[dont-override-sample-code] @amazon-codecatalyst/blueprints.import-from-git # This strategy is applied accross all sample code. The blueprint will create sample code, but skip attempting to update it. # Internal merge strategy: neverUpdate **/src/** **/css/**