

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

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

# 以蓝图用户的身份使用生命周期管理功能
<a name="lifecycle-management-user"></a>

利用生命周期管理功能，可以根据蓝图的更新后的选项或版本重新生成代码库。这可让蓝图作者集中管理每个包含特定蓝图的项目的软件开发生命周期。例如，通过将安全修复推送到 Web 应用程序蓝图，可让每个包含 Web 应用程序蓝图或从 Web 应用程序蓝图创建的项目自动获取该修复。此外，这个相同的管理框架可让您在选择蓝图选项后以蓝图用户的身份对其进行更改。

**Topics**
+ [对现有项目使用生命周期管理功能](#using-lm-existing-projects)
+ [对项目中的多个蓝图使用生命周期管理功能](#using-lm-multiple-bp)
+ [处理生命周期拉取请求中的冲突](#lm-conflicts)
+ [选择退出生命周期管理变更](#opt-out-lm)
+ [在项目中覆盖蓝图的生命周期管理](#override-updates-lm)

## 对现有项目使用生命周期管理功能
<a name="using-lm-existing-projects"></a>

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

## 对项目中的多个蓝图使用生命周期管理功能
<a name="using-lm-multiple-bp"></a>

由于蓝图代表架构组件，因此通常会在同一项目中结合使用多个蓝图。例如，一个项目可以包含由公司平台工程师构建的中央 Web API 蓝图与由应用程序安全团队构建的版本检查蓝图。所有这些蓝图均可单独更新，并且会记住过去应用于它们的合并解决方法。

**注意**  
作为任意架构组件，并非所有蓝图在结合使用时都有用或将在逻辑上进行协作，尽管它们仍会尝试相互合并。

## 处理生命周期拉取请求中的冲突
<a name="lm-conflicts"></a>

有时，生命周期拉取请求可能会产生合并冲突。可以手动解决这些冲突。后续蓝图更新中将记住这些解决方法。

## 选择退出生命周期管理变更
<a name="opt-out-lm"></a>

用户可以从项目中移除蓝图，以取消关联对蓝图的所有引用并选择退出生命周期更新。为了安全起见，这不会移除或影响项目的任何代码或资源，包括已从蓝图中添加的代码或资源。有关更多信息，请参阅[取消蓝图与项目的关联以停止更新取消蓝图与项目的关联](disassociate-bp.md)。

## 在项目中覆盖蓝图的生命周期管理
<a name="override-updates-lm"></a>

如果要覆盖蓝图对项目中特定文件的更新，可以在存储库中包含所有权文件。 [GitLab的代码所有者](https://docs.gitlab.com/ee/user/project/codeowners/)规范是推荐的指导方针。蓝图始终遵循代码拥有者文件而不是任何其他文件，并且可以生成如下所示的示例代码：

```
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/**
```