

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

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

# 配置开发环境的 devfile
<a name="devenvironment-devfile"></a>

*devfile* 是一种开放标准，可帮助您在整个团队中自定义开发环境。devfile 是一个 YAML 文件，用于对所需的开发工具进行编码。通过配置开发文件，您可以预先确定所需的项目工具和应用程序库，然后 Amazon CodeCatalyst 将它们安装到您的开发环境中。存储库与为它创建的 devfile 相对应，您可以为每个存储库创建一个单独的 devfile。您的开发环境支持命令和事件，并提供默认的通用 devfile 映像。

如果您使用空蓝图创建项目，则可以手动创建 devfile。如果您使用不同的蓝图创建项目，则会自动 CodeCatalyst 创建一个 devfile。开发环境的 `/projects` 目录存储从源存储库中提取的文件和 devfile。`/home` 目录（首次创建开发环境时，该目录为空）存储您在使用开发环境时创建的文件。开发环境的 `/projects` 和 `/home` 目录中的所有内容都将持久存储。

**注意**  
仅在更改 devfile 名称或 devfile 组件名称时，`/home` 文件夹才会更改。如果更改 devfile 或 devfile 组件名称，则 `/home` 目录的内容将被替换，并且无法恢复之前的 `/home` 目录数据。

如果您创建的开发环境的源存储库中的根目录不包含 devfile，或者创建的开发环境不具有源存储库，则系统会自动将默认的通用 devfile 应用于源存储库。所有 IDEs用户都使用相同的默认通用 devfile 镜像。 CodeCatalyst 目前支持 devfile 版本 2.0.0。有关 devfile 的更多信息，请参阅 [Devfile schema - Version 2.0.0](https://devfile.io/docs/2.0.0/devfile-schema)。

**注意**  
您只能在 devfile 中包含公共容器映像。

请注意，与 VPC 连接的开发环境仅支持以下 devfile 映像：
+ 通用映像
+ 私有 Amazon ECR 映像（如果存储库与 VPC 位于同一区域）

**Topics**
+ [编辑开发环境的存储库 devfile](devenvironment-devfile-moving.md)
+ [支持的 Devfile 功能 CodeCatalyst](#devenvironment-devfile-support)
+ [开发环境的 devfile 示例](#devenvironment-devfile-example)
+ [使用恢复模式排查存储库 devfile 的问题](#devenvironment-devfile-recovery)
+ [为开发环境指定通用 devfile 映像](devenvironment-universal-image.md)
+ [Devfile 命令](devenvironment-devfile-commands.md)
+ [Devfile 事件](devenvironment-devfile-events.md)
+ [Devfile 组件](devenvironment-devfile-components.md)

## 支持的 Devfile 功能 CodeCatalyst
<a name="devenvironment-devfile-support"></a>

CodeCatalyst 在 2.0.0 版本上支持以下开发文件功能。有关 devfile 的更多信息，请参阅 [Devfile schema - Version 2.0.0](https://devfile.io/docs/2.0.0/devfile-schema)。


| 功能 | Type | 
| --- | --- | 
| `exec` | 命令 | 
| `postStart` | 事件 | 
| `container` | 组件 | 
| `args` | 组件属性 | 
| `env` | 组件属性 | 
| `mountSources` | 组件属性 | 
| `volumeMounts` | 组件属性 | 

## 开发环境的 devfile 示例
<a name="devenvironment-devfile-example"></a>

以下是简单 devfile 的示例。

```
schemaVersion: 2.0.0
metadata:
  name: al2
components:
  - name: test
    container:
      image: public.ecr.aws/amazonlinux/amazonlinux:2
      mountSources: true
      command: ['sleep', 'infinity']
  - name: dockerstore
commands:
  - id: setupscript
    exec:
      component: test
      commandLine: "chmod +x script.sh"
      workingDir: /projects/devfiles
  - id: executescript
    exec:
      component: test
      commandLine: "/projects/devfiles/script.sh"
  - id: yumupdate
    exec:
      component: test
      commandLine: "yum -y update --security"
events:
  postStart:
    - setupscript
    - executescript
    - yumupdate
```

将捕获 devfile 的启动、命令和事件日志并将其存储在 `/aws/mde/logs` 中。要调试 devfile 行为，请使用有效的 devfile 启动开发环境并访问日志。

## 使用恢复模式排查存储库 devfile 的问题
<a name="devenvironment-devfile-recovery"></a>

如果启动 devfile 时出现问题，它将进入恢复模式，这样您仍能连接到您的环境并修复 devfile。在恢复模式中，运行 `/aws/mde/mde status` 将不会包含 devfile 的位置。

```
{
            "status": "STABLE"
        }
```

您可以查看 `/aws/mde/logs` 下的日志中的错误，修复 devfile，然后重试运行 `/aws/mde/mde start`。