本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立YAML工作流程文件
YAML 格式定義文件會設定映像建置程序建置和測試階段的輸入、輸出和工作流程步驟。您可以從包含標準化步驟的範本開始,也可以從頭開始定義自己的工作流程。無論您使用範本還是從頭開始,都可以自訂工作流程以符合您的需求。
YAML 工作流程文件的結構
Image Builder 用來執行映像建置和測試動作的YAML工作流程文件結構如下。
工作流程文件識別
唯一識別工作流程。本節可包含下列屬性。
欄位 |
Description (描述) |
Type |
必要 |
---|---|---|---|
name |
工作流程文件的名稱。 |
字串 |
否 |
description |
文件描述。 |
字串 |
否 |
schemaVersion |
文件結構描述版本,目前為 1.0。 |
字串 |
是 |
範例
--- name: sample-test-image description: Workflow for a sample image, with extra configuration options exposed through workflow parameters. schemaVersion: 1.0
工作流程文件輸入參數
工作流程文件的此部分會定義呼叫者可指定的輸入參數。如果您沒有任何參數,則可以將此區段保留出來。如果您確實指定參數,則每個參數都可以包含下列屬性。
欄位 |
Description (描述) |
Type |
必要 |
限制 |
---|---|---|---|---|
name |
參數名稱。 |
字串 |
是 |
|
description |
參數描述。 |
字串 |
否 |
|
預設 |
如果未提供值,則參數的預設值。如果您未在參數定義中包含預設值,則需要在執行時間輸入參數值。 |
符合參數資料類型。 |
否 |
|
type |
參數的資料類型。如果您未在參數定義中包含資料類型,則參數類型會預設為執行時間所需的字串值。 |
字串 |
是 |
參數的資料類型必須是下列其中一項:
|
範例
在工作流程文件中指定 參數。
parameters: - name: waitForActionAtEnd type: boolean default: true description: "Wait for an external action at the end of the workflow"
使用工作流程文件中的參數值。
$.parameters.waitForActionAtEnd
工作流程文件步驟
為工作流程指定最多 15 個步驟動作。步驟會以工作流程文件中定義的順序執行。發生故障時,復原會以相反順序執行,從失敗的步驟開始,然後反向執行先前的步驟。
每個步驟都可以參考任何先前步驟動作的輸出。這稱為鏈結,或參考 。若要參考先前步驟動作的輸出,您可以使用JSONPath選取器。例如:
$.stepOutputs.
step-name
.output-name
如需詳細資訊,請參閱在工作流程文件中使用動態變數。
注意
即使步驟本身沒有輸出屬性,步驟動作的任何輸出都會包含在 stepOutput
中。
每個步驟都可以包含下列屬性。
欄位 |
Description (描述) |
Type |
必要 |
預設值 |
限制 |
---|---|---|---|---|---|
動作 |
此步驟執行的工作流程動作。 |
字串 |
是 |
必須是 Image Builder 工作流程文件的支援步驟動作。 |
|
|
條件式陳述式會將控制決策點的流程新增至工作流程步驟的內文。 |
口述 |
否 |
Image Builder 支援下列條件式陳述式作為
|
|
description |
步驟描述。 |
字串 |
否 |
不允許空白字串。如果包含,長度必須為 1-1024 個字元。 |
|
inputs |
包含步驟動作需要執行的參數。您可以將索引鍵值指定為靜態值,或使用解析為正確資料類型的JSONPath變數。 |
口述 |
是 |
||
name |
步驟的名稱。此名稱在工作流程文件中必須是唯一的。 |
字串 |
是 |
長度必須介於 3-128 個字元之間。 可以包含英數字元 和 |
|
onFailure |
設定步驟失敗時要採取的動作,如下所示。 Behavior (行為)
|
字串 |
否 |
|
|
rollbackEnabled |
設定在發生失敗時是否復原該步驟。您可以使用靜態布林值或解析為布林值的動態JSONPath變數。 |
Boolean |
否 |
|
|
timeoutSeconds |
如果重試適用,則在失敗和重試之前執行步驟的最長時間,以秒為單位。 |
Integer |
否 |
視步驟動作定義的預設而定,如適用。 |
介於 1-86400 秒之間 (最多 24 小時) |
範例
steps: - name: LaunchTestInstance action: LaunchInstance onFailure: Abort inputs: waitFor: "ssmAgent" - name: ApplyTestComponents action: ExecuteComponents onFailure: Abort inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" - name: TerminateTestInstance action: TerminateInstance onFailure: Continue inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId" - name: WaitForActionAtEnd action: WaitForAction if: booleanEquals: true value: "$.parameters.waitForActionAtEnd"
工作流程文件輸出
定義工作流程的輸出。每個輸出都是一個索引鍵值對,可指定輸出的名稱和值。您可以使用輸出,在執行期匯出後續工作流程可以使用的資料。此區段為選用。
您定義的每個輸出都包含下列屬性。
欄位 |
Description (描述) |
Type |
必要 |
---|---|---|---|
name |
輸出的名稱。名稱在管道中包含的工作流程中必須是唯一的。 |
字串 |
是 |
value |
輸出的值。字串的值可以是正負值變數,例如來自步驟動作的輸出檔案。如需詳細資訊,請參閱在工作流程文件中使用動態變數。 |
字串 |
是 |
範例
為工作流程文件建立輸出映像 ID,其中包含步驟輸出createProdImage
。
outputs: - name: 'outputImageId' value: '$.stepOutputs.createProdImage.imageId'
請參閱下一個工作流程中的工作流程輸出。
$.workflowOutputs.outputImageId