

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

# 對建構模組使用發行版本和版本控制
<a name="version-control-best-practices"></a>

## 的版本控制 AWS CDK
<a name="version-control"></a>

AWS CDK 常見的建構可由多個團隊建立，並跨組織共用以供取用。一般而言，開發人員會在其常見 AWS CDK 建構中發佈新功能或錯誤修正。應用程式或任何其他現有建構會使用 AWS CDK 這些 AWS CDK 建構做為相依性的一部分。因此，開發人員獨立更新和發行具有正確語意版本的建構模組至關重要。下游 AWS CDK 應用程式或其他 AWS CDK 建構模組可以更新其相依性，以使用新發行的 AWS CDK 建構模組版本。

語意版本控制 (Semver) 是一組規則或方法，用於為電腦軟體提供唯一的軟體編號。版本定義如下：
+ 主要版本包含不相容的 API 變更或重大變更。
+ 次要版本包含以回溯相容方式新增的功能。
+ 修補版本包含回溯相容的錯誤修正。

如需有關語意版本控制的詳細資訊，請參閱語意版本控制文件中的[語意版本控制規格 (SemVer)](https://semver.org/)。

## AWS CDK 建構的儲存庫和封裝
<a name="repo-packaging"></a>

由於 AWS CDK 建構是由不同的團隊開發並由多個 AWS CDK 應用程式使用，因此您可以為每個 AWS CDK 建構使用個別的儲存庫。這也可以協助您強制執行存取控制。每個儲存庫都可以包含與相同 AWS CDK 建構相關的所有原始程式碼及其所有相依性。透過將單一應用程式 AWS CDK （即建構） 保留在單一儲存庫中，您可以減少部署期間變更的影響範圍。

 AWS CDK 不僅會產生用於部署基礎設施的 CloudFormation 範本，還會綁定執行期資產，例如 Lambda 函數和 Docker 映像，並將其與您的基礎設施一起部署。不僅可以結合定義基礎設施的程式碼，以及將執行時間邏輯實作為單一建構的程式碼，這是最佳實務。這兩種程式碼不需要位於單獨的儲存庫中，甚至不需要位於單獨的套件中。

若要跨儲存庫界限取用套件，您必須具有私有套件儲存庫 - 類似於 npm、PyPi 或 Maven Central，但位於組織內部。您還必須具有發行流程來建置、測試套件並將其發佈至私有套件儲存庫。您可以使用本機虛擬機器 (VM) 或 Amazon S3 建立私有儲存庫，例如 PyPi 伺服器。當您設計或建立私有套件登錄檔時，考慮由於高可用性和可擴展性而導致服務中斷的風險至關重要。在雲端託管以存放套件的無伺服器受管服務可以大幅降低維護開銷。例如，您可以使用 [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/) 來託管大多數熱門程式設計語言的套件。您也可以使用 CodeArtifact 設定外部儲存庫連線並在 CodeArtifact 內進行複寫。

對套件儲存庫中套件的相依性由您的語言的套件管理員 (例如，用於 TypeScript 或 JavaScript 應用程式的 npm) 管理。您的套件管理員透過記錄應用程式依賴的每個套件的特定版本來確保建置是可重複的，然後讓您以受控的方式升級這些相依性，如下圖所示。

![套件相依性](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/images/dependencies.png)


## 建構 的發行 AWS CDK
<a name="construct-releasing"></a>

我們建議您建立自己的自動化管道，以建置和發行新的 AWS CDK 建構版本。如果您制定了適當的提取請求核准程序，則一旦您提交並將原始程式碼推送到儲存庫的主要分支中，管道就可以建置並建立發行候選版本。在發佈生產就緒型版本之前，可以將該版本推送至 CodeArtifact 並進行測試。或者，您可以在本機測試新的 AWS CDK 建構版本，然後再將程式碼與主要分支合併。這會導致管道發行生產就緒型版本。考慮到共用建構模組和套件必須獨立於使用應用程式進行測試，就像其向公眾發行一樣。

下圖顯示範例 AWS CDK 版本發行管道。

![](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/images/release_pipeline.png)


您可以使用下列範例命令來建置、測試和發佈 npm 套件。首先，透過執行下列命令登入成品儲存庫。

```
aws codeartifact login --tool npm --domain <Domain Name> --domain-owner $(aws sts get-caller-identity --output text --query 'Account')  \
--repository <Repository Name> --region <AWS Region Name>
```

然後，完成下列步驟：

1. 根據 `package.json`** **文件安裝所需的套件：`npm install`

1. 建立候選發行版本：`npm version prerelease --preid rc`

1. 建置 npm 套件：`npm run build`

1. 測試 npm 套件：`npm run test`

1. 發佈 npm 套件：`npm publish`