本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用构件在工作流程中的操作之间共享数据
构件是工作流程操作的输出,通常由文件夹或文件存档组成。构件之所以重要,是因为它们允许您在操作之间共享文件和信息。
例如,您可能有一个生成sam-template.yml
文件的生成操作,但您希望部署操作使用该文件。在这种情况下,您将使用构件来允许生成操作与部署操作共享sam-template.yml
文件。代码可能看起来像这样:
Actions:
BuildAction:
Identifier: aws/build@v1
Steps:
- Run: sam package --output-template-file sam-template.yml
Outputs:
Artifacts:
- Name: MYARTIFACT
Files:
- sam-template.yml
DeployAction:
Identifier: aws/cfn-deploy@v1
Inputs:
Artifacts:
- MYARTIFACT
Configuration:
template: sam-template.yml
在前面的代码中,生成操作 (BuildAction
) 生成一个sam-template.yml
文件,然后将其添加到名为的输出构件中MYARTIFACT
。随后的部署操作 (DeployAction
) 指定MYARTIFACT
为输入,允许其访问该sam-template.yml
文件。
我能否在不将工件指定为输出和输入的情况下共享它们?
是的,您可以在操作之间共享工件,而无需在操作的 YAML Inputs
代码的Outputs
和部分中指定它们。为此,必须开启计算共享。有关计算共享以及如何在开启计算共享时指定构件的更多信息,请参阅跨操作共享计算。
注意
尽管计算共享功能允许您通过消除对Outputs
和Inputs
部分的需求来简化工作流程的 YAML 代码,但该功能存在一些局限性,在开启之前您应该注意这些局限性。有关这些限制的信息,请参阅计算共享的注意事项。
我能否在工作流程之间共享工件?
不可以,您不能在不同的工作流程之间共享构件;但是,您可以在同一工作流程中的操作之间共享构件。
定义输出对象
按照以下说明定义要输出操作的对象。然后,该构件可供其他操作使用。
注意
并非所有操作都支持输出构件。要确定您的操作是否支持它们,请仔细阅读随后的可视化编辑器说明,并查看该操作是否包含 “输出” 选项卡上的 “输出构件” 按钮。如果是,则支持输出工件。
定义输入工件
如果要使用其他操作生成的对象,则必须将其指定为当前操作的输入。您可以将多个构件指定为输入,具体取决于操作。有关更多信息,工作流程 YAML 定义请参阅您的操作。
注意
您不能引用其他工作流程中的构件。
按照以下说明将来自另一个操作的对象指定为当前操作的输入。
先决条件
在开始之前,请确保已输出其他操作的构件。有关更多信息,请参阅 定义输出对象。输出构件使其可供其他操作使用。
在构件中引用文件
如果您的文件位于某个对象中,并且需要在其中一个工作流程操作中引用该文件,请完成以下步骤。
注意
另请参阅 引用源存储库中的文件。
引用构件中的文件
-
在要引用文件的操作中,添加类似于以下内容的代码:
Actions: My-action: Inputs: Sources: - WorkflowSource Artifacts: -
artifact-name
Configuration: Steps: - run: cd $CATALYST_SOURCE_DIR_artifact-name
/build-output && cat file.txt在前面的代码中,该操作在
工件名称
构件的build-output
目录中查找并显示该file.txt
文件。有关更多示例,请参阅文物示例。
注意
你可以省略
$CATALYST_SOURCE_DIR_
前缀,具体取决于你配置操作的方式。有关更多信息,请参阅以下指南。artifact-name
/有关如何引用变量的指导:
-
如果您的操作仅包含下方的一个项目
Inputs
(例如,它包含一个输入构件而不包含源),则可以省略前缀,只指定相对于构件根目录的文件路径。 -
如果文件位于主输入中,也可以省略前缀。主输入要么是列出的第一个输入工件(如果没有)
WorkflowSource
。WorkflowSource
-
根据您使用的操作,前缀可能会有所不同。有关更多信息,请参阅下表。
-
操作类型 | 要使用的文件路径前缀 | 示例 |
---|---|---|
|
|
|
所有其他操作 |
或者
|
或者
|
正在下载工件
您可以下载并检查工作流程操作生成的构件以进行故障排除。您可以下载两种类型的神器:
-
源构件-包含运行开始时存在的源存储库内容快照的对象。
-
工作流程构件-在工作流程配置文件的
Outputs
属性中定义的工件。
下载工作流程输出的构件
打开 CodeCatalyst 控制台,网址为 https://codecatalyst.aws/
。 -
选择您的项目。
在导航窗格中,选择 C I/CD,然后选择工作流程。
-
选择工作流程的名称。您可以按定义工作流程的源存储库或分支名称进行筛选,也可以按工作流程名称进行筛选。
-
a在工作流程的名称下,选择运行。
-
在 “运行历史记录” 的 “运行 ID” 列中,选择一次运行。例如,
Run-95a4d
。 -
在跑步名称下,选择工件。
-
在构件旁边,选择下载。下载存档文件。它的文件名由七个随机字符组成。
-
使用您选择的档案提取实用程序提取存档。
文物示例
以下示例说明如何在工作流程定义文件中输出、输入和引用工件。
示例:输出构件
以下示例说明如何输出包含两个.jar 文件的构件。
Actions:
Build:
Identifier: aws/build@v1
Outputs:
Artifacts:
- Name: ARTIFACT1
Files:
- build-output/file1.jar
- build-output/file2.jar
示例:输入由其他操作生成的构件
以下示例向您展示了如何输出调用的ARTIFACT4
构件并将其输入到BuildActionB
。BuildActionA
Actions:
BuildActionA:
Identifier: aws/build@v1
Outputs:
Artifacts:
- Name: ARTIFACT4
Files:
- build-output/file1.jar
- build-output/file2.jar
BuildActionB:
Identifier: aws/build@v1
Inputs:
Artifacts:
- ARTIFACT4
Configuration:
示例:引用多个构件中的文件
以下示例向您展示了如何输出两个名为 and in 的工件BuildActionC
,ART5
然后ART6
在(下方)中引用两个名为file5.txt
(在 artifact 中 ART5
ART6
)和 file6.txt
BuildActionD
(在构件中Steps
)的文件。
注意
有关引用文件的更多信息,请参阅在构件中引用文件。
注意
尽管该示例显示了正在使用的$CATALYST_SOURCE_DIR_ART5
前缀,但您可以省略它。这是因为ART5
这是主要输入。要了解有关主要输入的更多信息,请参阅在构件中引用文件。
Actions:
BuildActionC:
Identifier: aws/build@v1
Outputs:
Artifacts:
- Name: ART5
Files:
- build-output/file5.txt
- Name: ART6
Files:
- build-output/file6.txt
BuildActionD:
Identifier: aws/build@v1
Inputs:
Artifacts:
- ART5
- ART6
Configuration:
Steps:
- run: cd $CATALYST_SOURCE_DIR_ART5/build-output && cat file5.txt
- run: cd $CATALYST_SOURCE_DIR_ART6/build-output && cat file6.txt
示例:在单个构件中引用文件
以下示例向您展示如何输出一个名为的工件BuildActionE
,然后ART7
在(下方ART7
)中引用 file7.txt
BuildActionF
(在构件中Steps
)。
请注意,该引用并不像在目录前面那样要求在build-output
目录前面加上$CATALYST_SOURCE_DIR_
工件名称
前缀。示例:引用多个构件中的文件这是因为下面只指定了一个项目Inputs
。
注意
有关引用文件的更多信息,请参阅在构件中引用文件。
Actions:
BuildActionE:
Identifier: aws/build@v1
Outputs:
Artifacts:
- Name: ART7
Files:
- build-output/file7.txt
BuildActionF:
Identifier: aws/build@v1
Inputs:
Artifacts:
- ART7
Configuration:
Steps:
- run: cd build-output && cat file7.txt
示例:存在对象时引用对象中的文件 WorkflowSource
以下示例向您展示如何输出一个名为的工件BuildActionG
,然后ART8
在(下方ART8
)中引用 file8.txt
BuildActionH
(在构件中Steps
)。
请注意,参考文献需要$CATALYST_SOURCE_DIR_
工件名称前
缀,就像在中一样。示例:引用多个构件中的文件这是因为下方指定了多个项目Inputs
(一个源和一个构件),所以你需要使用前缀来指示在哪里查找文件。
注意
有关引用文件的更多信息,请参阅在构件中引用文件。
Actions:
BuildActionG:
Identifier: aws/build@v1
Outputs:
Artifacts:
- Name: ART8
Files:
- build-output/file8.txt
BuildActionH:
Identifier: aws/build@v1
Inputs:
Sources:
- WorkflowSource
Artifacts:
- ART8
Configuration:
Steps:
- run: cd $CATALYST_SOURCE_DIR_ART8/build-output && cat file8.txt