

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

# 使用 產生入門 CI/CD 管道 AWS SAM
<a name="serverless-generating-example-ci-cd"></a>

當您準備好自動化部署時，您可以使用其中一個 AWS SAM入門管道範本，為您選擇使用的 CI/CD 系統產生部署管道。您的部署管道是您設定和使用 來自動化無伺服器應用程式的部署。入門管道範本已預先設定，可協助您快速設定無伺服器應用程式的部署管道。

透過入門管道範本，您可以使用 [sam pipeline init](sam-cli-command-reference-sam-pipeline-init.md)命令在幾分鐘內產生管道。

入門管道範本使用 CI/CD 系統熟悉的 JSON/YAML 語法，並納入最佳實務，例如跨多個帳戶和區域管理成品，以及使用部署應用程式所需的最低許可量。目前，CLI AWS SAM 支援為 [AWS CodePipeline](https://aws.amazon.com/codepipeline)、[Jenkins](https://www.jenkins.io/)、[GitLab CI/CD、GitHub Actions 和 Bitbucket Pipelines 產生入門 CI/CD](https://docs.gitlab.com/ee/ci/) 管道組態。 [GitHub ](https://github.com/features/actions) [https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/)

以下是產生入門管道組態所需的高階任務：

1. **建立基礎設施資源** – 您的管道需要特定 AWS 資源，例如具有必要許可的 IAM 使用者和角色、Amazon S3 儲存貯體，以及選用的 Amazon ECR 儲存庫。

1. **將您的 Git 儲存庫與您的 CI/CD 系統連線** – 您的 CI/CD 系統需要知道哪些 Git 儲存庫會觸發管道執行。請注意，視您使用的 Git 儲存庫和 CI/CD 系統組合而定，可能不需要此步驟。

1. **產生管道組態** – 此步驟會產生入門管道組態，其中包含兩個部署階段。

1. **將您的管道組態遞交至 Git 儲存庫** – 此步驟是必要的，以確保您的 CI/CD 系統了解您的管道組態，並在遞交變更時執行。

在您產生入門管道組態並將其遞交至 Git 儲存庫之後，每當有人對該儲存庫遞交程式碼變更時，管道都會觸發自動執行。

這些步驟的順序，以及每個步驟的詳細資訊，會根據您的 CI/CD 系統而有所不同：
+ 如果您使用的是 AWS CodePipeline，請參閱 [在 AWS CodePipeline 中產生 的入門管道 AWS SAM](serverless-generating-example-ci-cd-codepipeline.md)。
+ 如果您使用的是 Jenkins、GitLab CI/CD、GitHub Actions 或 Bitbucket Pipelines，請參閱 [使用 AWS SAM 為 Jenkins、GitLab CI/CD、GitHub Actions、Bitbucket Pipelines 產生入門管道](serverless-generating-example-ci-cd-others.md)。

# 在 AWS CodePipeline 中產生 的入門管道 AWS SAM
<a name="serverless-generating-example-ci-cd-codepipeline"></a>

若要產生 的入門管道組態 AWS CodePipeline，請依此順序執行下列任務：

1. 建立基礎設施資源

1. 產生管道組態

1. 將您的管道組態遞交至 Git

1. 將您的 Git 儲存庫與您的 CI/CD 系統連線

**注意**  
下列程序使用兩個 AWS SAM CLI命令 `sam pipeline bootstrap`和 `sam pipeline init`。有兩個命令的原因是處理使用案例，其中管理員 （即需要許可來設定基礎設施 AWS 資源的使用者，例如 IAM 使用者和角色） 擁有更多許可，開發人員 （即只需要許可來設定個別管道，但不需要必要基礎設施 AWS 資源的使用者）。

## 步驟 1：建立基礎設施資源
<a name="generating-example-step-1"></a>

使用 的管道 AWS SAM 需要特定 AWS 資源，例如具有必要許可的 IAM 使用者和角色、Amazon S3 儲存貯體，以及選用的 Amazon ECR 儲存庫。您必須針對管道的每個部署階段擁有一組基礎設施資源。

您可以執行下列命令來協助進行此設定：

```
sam pipeline bootstrap
```

**注意**  
針對管道的每個部署階段執行先前的命令。

## 步驟 2：產生管道組態
<a name="generating-example-step-2"></a>

若要產生管道組態，請執行下列命令：

```
sam pipeline init
```

## 步驟 3：將您的管道組態遞交至 Git 儲存庫
<a name="generating-example-step-3"></a>

此步驟是必要的，以確保您的 CI/CD 系統知道您的管道組態，並在遞交變更時執行。

## 步驟 4：將 Git 儲存庫與您的 CI/CD 系統連線
<a name="generating-example-step-4"></a>

對於 AWS CodePipeline ，您現在可以執行下列命令來建立連線：

```
sam deploy -t codepipeline.yaml --stack-name <pipeline-stack-name> --capabilities=CAPABILITY_IAM --region <region-X>
```

如果您使用的是 GitHub 或 Bitbucket，則先前執行 **sam deploy**命令後，請依照*開發人員工具主控台使用者指南*中的更新待定連線主題中的**完成連線**步驟，完成連線。 [https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html)此外，請存放`CodeStarConnectionArn`來自 **sam deploy**命令輸出的 複本，因為如果您想要 AWS CodePipeline 搭配 以外的其他分支使用 ，則需要它`main`。

## 設定其他分支
<a name="configuring-other-branches"></a>

根據預設， AWS CodePipeline 會使用 `main`分支 AWS SAM。如果您想要使用 以外的分支`main`，您必須再次執行 **sam deploy**命令。請注意，視您使用的 Git 儲存庫而定，您可能還需要提供 `CodeStarConnectionArn`：

```
# For GitHub and Bitbucket
sam deploy -t codepipeline.yaml --stack-name <feature-pipeline-stack-name> --capabilities=CAPABILITY_IAM --parameter-overrides="FeatureGitBranch=<branch-name> CodeStarConnectionArn=<codestar-connection-arn>"

# For AWS CodeCommit
sam deploy -t codepipeline.yaml --stack-name <feature-pipeline-stack-name> --capabilities=CAPABILITY_IAM --parameter-overrides="FeatureGitBranch=<branch-name>"
```

## 進一步了解
<a name="serverless-generating-cicd-learn"></a>

如需設定 CI/CD 管道的實作範例，請參閱*完成 AWS SAM 研討會*中的[使用 CI/CD AWS CodePipeline](https://catalog.workshops.aws/complete-aws-sam/en-US/module-4-cicd)。

# 使用 AWS SAM 為 Jenkins、GitLab CI/CD、GitHub Actions、Bitbucket Pipelines 產生入門管道
<a name="serverless-generating-example-ci-cd-others"></a>

若要產生 Jenkins、GitLab CI/CD、GitHub Actions 或 Bitbucket Pipelines 的入門管道組態，請依此順序執行下列任務：

1. 建立基礎設施資源

1. 將您的 Git 儲存庫與您的 CI/CD 系統連線

1. 建立登入資料物件

1. 產生管道組態

1. 將您的管道組態遞交至 Git 儲存庫

**注意**  
下列程序使用兩個 AWS SAM CLI命令 `sam pipeline bootstrap`和 `sam pipeline init`。有兩個命令的原因是處理使用案例，其中管理員 （即需要許可來設定基礎設施 AWS 資源的使用者，例如 IAM 使用者和角色） 擁有更多許可，開發人員 （即只需要許可來設定個別管道，但不需要必要基礎設施 AWS 資源的使用者）。

## 步驟 1：建立基礎設施資源
<a name="generating-example-step-1"></a>

使用 的管道 AWS SAM 需要特定 AWS 資源，例如具有必要許可的 IAM 使用者和角色、Amazon S3 儲存貯體，以及選用的 Amazon ECR 儲存庫。您必須針對管道的每個部署階段擁有一組基礎設施資源。

您可以執行下列命令來協助進行此設定：

```
sam pipeline bootstrap
```

**注意**  
針對管道的每個部署階段執行先前的命令。

您必須為管道的每個部署階段擷取管道使用者的 AWS 登入資料 （金鑰 ID 和私密金鑰），因為後續步驟需要這些登入資料。

## 步驟 2：將 Git 儲存庫與您的 CI/CD 系統連線
<a name="generating-example-step-2"></a>

必須將 Git 儲存庫連線至您的 CI/CD 系統，以便 CI/CD 系統能夠存取您的應用程式原始碼以進行建置和部署。

**注意**  
如果您使用下列其中一個組合，則可以略過此步驟，因為會自動為您完成連線：  
使用 GitHub 儲存庫的 GitHub 動作
使用 GitLab 儲存庫的 GitLab CI/CD
具有 Bitbucket 儲存庫的 Bitbucket 管道

若要將 Git 儲存庫與您的 CI/CD 系統連線，請執行下列其中一項操作：
+ 如果您使用的是 Jenkins，請參閱「新增分支來源」的 [Jenkins 文件](https://www.jenkins.io/doc/book/pipeline/multibranch/)。
+ 如果您使用的是 GitLab CI/CD 和 GitLab 以外的 GitLab 儲存庫，請參閱「連接外部儲存庫」的 [GitLab 文件](https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/)。

## 步驟 3：建立登入資料物件
<a name="generating-example-step-3"></a>

每個 CI/CD 系統都有自己的方法來管理 CI/CD 系統存取 Git 儲存庫所需的登入資料。

若要建立必要的登入資料物件，請執行下列其中一項操作：
+ 如果您使用的是 Jenkins，請建立儲存金鑰 ID 和私密金鑰的單一「憑證」。請遵循[使用部落格建置 Jenkins 管道 AWS SAM](https://aws.amazon.com/blogs/compute/building-a-jenkins-pipeline-with-aws-sam/)一節中的指示****。下一個步驟需要 "Credential id"。
+ 如果您使用的是 GitLab CI/CD，請建立兩個「受保護的變數」，每個金鑰 ID 和私密金鑰各一個。遵循 [GitLab 文件](https://docs.gitlab.com/ee/ci/variables/)中的指示 – 在下一個步驟中，您將需要兩個「可變金鑰」。
+ 如果您使用的是 GitHub 動作，請建立兩個「加密的秘密」，每個金鑰和私密金鑰各一個。遵循 [GitHub 文件](https://docs.github.com/en/actions/reference/encrypted-secrets)中的指示 - 下一個步驟需要兩個「秘密名稱」。
+ 如果您使用的是 Bitbucket 管道，請建立兩個「安全變數」，每個金鑰 ID 和私密金鑰各一個。遵循[變數和秘密](https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets)中的指示 - 下一個步驟需要兩個「秘密名稱」。

## 步驟 4：產生管道組態
<a name="generating-example-step-4"></a>

若要產生管道組態，請執行下列命令。您需要輸入您在上一個步驟中建立的登入資料物件：

```
sam pipeline init
```

## 步驟 5：將您的管道組態遞交至 Git 儲存庫
<a name="generating-example-step-5"></a>

此步驟是必要的，以確保您的 CI/CD 系統知道您的管道組態，並在遞交變更時執行。

## 進一步了解
<a name="serverless-generating-other-cicd-learn"></a>

如需使用 設定 CI/CD 管道的實作範例GitHub Actions，請參閱 *完成 AWS SAM 研討會*中的[使用 CI/CDGitHub](https://s12d.com/sam-ws-en-gh)。