

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Deadline Cloud 自动生成软件包
<a name="automate-package-builds"></a>

对于 CI/CD 工作流程或需要为多个操作系统构建软件包时，您可以创建 Deadline Cloud 包构建队列。队列计划在您的队列上生成任务，队列生成软件包并将其发布到您的亚马逊简单存储服务 (Amazon S3) conda 频道。这种自动化简化了维护所有所需配置中软件版本的持续软件包构建。

您可以使用 AWS CloudFormation (CloudFormation) 模板创建包构建队列，也可以从 Deadline Cloud 控制台手动创建。该 CloudFormation 模板部署了一个完整的农场，其中已配置了生产队列和包构建队列。通过控制台创建队列可以更好地控制各个设置。

## 使用创建包构建队列 CloudFormation
<a name="s3-channel-create-queue-cfn"></a>

您可以使用 CloudFormation 模板来创建包含包构建队列的 Deadline Cloud 农场。该模板使用私有 Amazon S3 conda 通道配置生产队列和包构建队列。

在部署模板之前，创建一个 Amazon S3 存储桶来保存任务附件和您的 conda 频道。您可以从 [ Amazon S3 控制台创建存储桶](https://console.aws.amazon.com/s3/)。部署模板时需要存储桶名称。

**要部署 CloudFormation 模板**

1. 从 Deadline Cloud 示例存储库下载 d [ eadline-cloud-starter-farm-template.yaml 模板。](https://github.com/aws-deadline/deadline-cloud-samples/raw/mainline/cloudformation/farm_templates/starter_farm/deadline-cloud-starter-farm-template.yaml) [https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/starter_farm](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/starter_farm) GitHub

1. 在[CloudFormation 控制台中](https://console.aws.amazon.com/cloudformation/)，选择**创建堆栈**，然后选择**使用新资源（标准）**。

1. 选择上传模板文件的选项，然后上传该`deadline-cloud-starter-farm-template.yaml`文件。

1. 输入堆栈的名称，例如**StarterFarm**，并提供任务附件和 conda 频道的 Amazon S3 存储桶的名称。

1. 按照 CloudFormation 控制台步骤完成堆栈创建。

有关模板参数和自定义选项的更多信息，请参阅 Deadline Cloud 示例存储库[中的](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/starter_farm)入门农场自述文件。GitHub

## 从控制台创建包构建队列
<a name="s3-channel-create-queue"></a>

按照 Deadl * ine Cloud 用户指南[中](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue.html)创建队列中的说明进行操作*。进行以下更改：
+ 在步骤 5 中，选择现有的 Amazon S3 存储桶。指定根文件夹名称，例如，以**DeadlineCloudPackageBuild**使构建构件与普通的 Deadline Cloud 附件分开。
+ 在步骤 6 中，您可以将包构建队列与现有队列相关联，或者如果当前队列不合适，则可以创建全新的队列。
+ 在步骤 9 中，为您的包构建队列创建新的服务角色。您将修改权限，为队列提供上传压缩包和重新索引 conda 频道所需的权限。

### 配置包构建队列权限
<a name="package-building-queue-permissions"></a>

要允许包构建队列访问队列的 Amazon S3 存储桶中的`/Conda`前缀，您必须修改队列的角色以授予其 read/write 访问权限。该角色需要以下权限，以便软件包构建任务可以上传新包并为频道重新编入索引。
+ `s3:GetObject`
+ `s3:PutObject`
+ `s3:ListBucket`
+ `s3:GetBucketLocation`
+ `s3:DeleteObject`

1. 打开 Deadline Cloud 控制台并导航到包生成队列的队列详细信息页面。

1. 选择队列服务角色，然后选择**编辑队列**。

1. 滚动至**队列服务角色**部分，然后选择在 IAM 控制台中**查看此角色**。

1. 从权限策略列表中，**AmazonDeadlineCloudQueuePolicy**为您的队列选择。

1. 从 ** “**权限” 选项卡中，选择 “**编辑” **。

1. 向队列服务角色添加一个新部分，如下所示。将{{amzn-s3-demo-bucket}}和{{111122223333}}替换为您自己的存储桶和账户。

   ```
   {
      "Effect": "Allow",
      "Sid": "CustomCondaChannelReadWrite",
      "Action": [
       "s3:GetObject",
       "s3:PutObject",
       "s3:DeleteObject",
       "s3:ListBucket",
       "s3:GetBucketLocation"
      ],
      "Resource": [
       "arn:aws:s3:::amzn-s3-demo-bucket",
       "arn:aws:s3:::amzn-s3-demo-bucket/Conda/*"
      ],
      "Condition": {
       "StringEquals": {
        "aws:ResourceAccount": "111122223333"
       }
      }
     },
   ```

## 提交软件包构建任务
<a name="automate-submit-package-job"></a>

创建包构建队列并配置队列权限后，您可以提交任务来构建 conda 软件包。[截止日期云示例](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes#readme)存储库中的`submit-package-job`脚本GitHub提交了 conda 配方的构建作业。

您需要以下项：
+ 在您的工作站上[安装了 Deadl ](https://github.com/aws-deadline/deadline-cloud) ine Cloud CLI。
+ 活动[AWS 的最后期限云监视器（截止日期云监视器）](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/working-with-deadline-monitor.html)登录会话。
+ [截止日期云示例](https://github.com/aws-deadline/deadline-cloud-samples)存储库的克隆。

**提交软件包生成任务**

1. 打开 Deadline Cloud 配置 GUI，将默认农场和队列设置为您的包构建队列。

   ```
   deadline config gui
   ```

1. 切换到示例存储库中的`conda_recipes`目录。

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 使用食谱目录运行`submit-package-job`脚本。以下示例构建 Blender 4.5 配方。

   ```
   ./submit-package-job blender-4.5/
   ```

   如果配方需要尚未下载的源存档，则脚本会提供下载说明。下载存档并再次运行脚本。

提交任务后，使用截止日期云监视器查看任务的进度和状态。

![截止日期云监视器显示构建 conda 软件包的作业的进度和状态。](http://docs.aws.amazon.com/zh_cn/deadline-cloud/latest/developerguide/images/Conda-Figure3.png)


监视器显示了工作的两个步骤：构建软件包，然后重新索引 conda 频道。当您右键单击包构建步骤的任务并选择 “**查看日志” 时**，监视器会显示会话操作：
+ **同步附件 **-复制输入作业附件或装载虚拟文件系统。
+ **启动 conda ** — 队列环境操作。构建任务未指定 conda 包，因此此操作很快完成。
+ **启动 CondaBuild Env ** — 使用构建 conda 包和重新索引频道所需的软件创建 conda 虚拟环境。
+ **任务运行 **-生成软件包并将结果上传到 Amazon S3。

操作运行时，它们会将日志发送到亚马逊 CloudWatch (CloudWatch)。作业完成后，选择 “**查看所有任务的日志” ** 以查看有关环境设置和拆解的其他日志。