

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

# 如何使用 自訂入門管道 AWS SAM
<a name="serverless-customizing-starter-pipelines"></a>

身為 CI/CD 管理員，您可能想要自訂入門管道範本和相關聯的引導式提示，組織中的開發人員可以使用這些提示來建立管道組態。

建立入門範本時， AWS SAM CLI會使用 Cookiecutter 範本。如需 Cookie 切線器範本的詳細資訊，請參閱 [Cookiecutter](https://cookiecutter.readthedocs.io/en/latest/README.html)。

您也可以自訂使用 `sam pipeline init`命令建立管道組態時， AWS SAM CLI向使用者顯示的提示。若要自訂使用者提示，請執行下列動作：

1. **建立`questions.json`檔案** – `questions.json` 檔案必須位於專案儲存庫的根目錄中。這是與 `cookiecutter.json` 檔案相同的目錄。若要檢視`questions.json`檔案的結構描述，請參閱 [questions.json.schema](https://github.com/aws/aws-sam-cli/blob/2b831b29f76ac9c4e0cbcbd68b37f8f664e136d8/samcli/lib/pipeline/init/questions.json.schema)。若要檢視範例`questions.json`檔案，請參閱 [questions.json](https://github.com/aws/aws-sam-cli-pipeline-init-templates/blob/main/Jenkins/two-stage-pipeline-template/questions.json)。

1. **使用 Cookiecutter 名稱對應問題金鑰** – `questions.json` 檔案中的每個物件都需要符合 Cookiecutter 範本中名稱的金鑰。此金鑰比對是 將 AWS SAM CLI使用者提示回應映射至 Cookie 切換器範本的方式。若要查看此金鑰比對的範例，請參閱本主題稍後的 [範例檔案](#serverless-customizing-starter-pipelines-example-files)一節。

1. **建立`metadata.json`檔案** – 宣告管道在`metadata.json`檔案中的階段數。階段數目會指示 `sam pipeline init`命令要提示多少階段的資訊，或在 `--bootstrap`選項的情況下，要為其建立基礎設施資源的階段數量。若要檢視宣告具有兩個階段之管道的範例`metadata.json`檔案，請參閱 [metadata.json](https://github.com/aws/aws-sam-cli-pipeline-init-templates/blob/main/Jenkins/two-stage-pipeline-template/metadata.json)。

## 範例專案
<a name="serverless-customizing-starter-pipelines-example-projects"></a>

以下是範例專案，每個專案都包含 Cookiecutter 範本、 `questions.json` 檔案和 `metadata.json` 檔案：
+ Jenkins 範例：[兩階段 Jenkins 管道範本](https://github.com/aws/aws-sam-cli-pipeline-init-templates/tree/main/Jenkins/two-stage-pipeline-template)
+ CodePipeline 範例：[兩階段 CodePipeline 管道範本](https://github.com/aws/aws-sam-cli-pipeline-init-templates/tree/main/AWS-CodePipeline/two-stage-pipeline-template)

## 範例檔案
<a name="serverless-customizing-starter-pipelines-example-files"></a>

以下一組檔案顯示`questions.json`檔案中的問題如何與 Cookiecutter 範本檔案中的項目相關聯。請注意，這些範例是檔案程式碼片段，而不是完整檔案。若要查看完整檔案的範例，請參閱本主題前面的[範例專案](#serverless-customizing-starter-pipelines-example-projects)一節。

範例**`questions.json`**：

```
{
  "questions": [{
    "key": "intro",
    "question": "\nThis template configures a pipeline that deploys a serverless application to a testing and a production stage.\n",
    "kind": "info"
  }, {
    "key": "pipeline_user_jenkins_credential_id",
    "question": "What is the Jenkins credential ID (via Jenkins plugin \"aws-credentials\") for pipeline user access key?",
    "isRequired": true
  }, {
    "key": "sam_template",
    "question": "What is the template file path?",
    "default": "template.yaml"
  }, {
    ...
```

範例**`cookiecutter.json`**：

```
{
  "outputDir": "aws-sam-pipeline",
  "pipeline_user_jenkins_credential_id": "",
  "sam_template": "",
    ...
```

範例**`Jenkinsfile`**：

```
pipeline {
  agent any
  environment {
    PIPELINE_USER_CREDENTIAL_ID = '{{cookiecutter.pipeline_user_jenkins_credential_id}}'
    SAM_TEMPLATE = '{{cookiecutter.sam_template}}'
    ...
```