

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 以藍圖使用者身分使用生命週期管理
<a name="lifecycle-management-user"></a>

生命週期管理是能夠從更新的選項或藍圖版本重新產生程式碼庫。這可讓藍圖作者集中管理每個包含特定藍圖之專案的軟體開發生命週期。例如，將安全性修正推送至 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 應用程式中的該部分程式碼庫都會自動與團隊的最佳實務保持最新狀態。

## 在專案中的多個藍圖上使用生命週期管理
<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/**
```