**前提条件:**本指南默认你已熟悉声明式环境配置。入门介绍请参阅声明式环境配置。
配置环境之前,请先确保已连接你的 SCM 提供商 (Enterprise Settings > Integrations) ,并且已为每个组织授予其仓库访问权限 (Enterprise Settings > Repository Permissions) 。在明确授予访问权限之前,各组织无法将 repo 添加到其环境中。详情请参阅 Git Integrations。
Enterprise admins 可以定义一个适用于 Enterprise 内每个组织的基础环境。这样,你就能集中管理 Devin 使用的工具、运行时和安全基础架构,同时仍允许各个 org 和 repo 在此基础上进行自定义配置。
Devin 的环境配置采用三级层级结构,下一层级基于上一层级构建:
+-----------------------------------------+
| Enterprise Blueprint |
| Python 3.12, Node 20, security tools |
+-----------------------------------------+
| Organization Blueprint |
| private npm registry, team linting |
+-----------------------------------------+
| Repository Blueprint |
| npm install, project-specific config |
+-----------------------------------------+
| Tier | Who manages it | Scope |
|---|
| 企业版 | 企业管理员 | 所有组织和所有仓库 |
| 组织 | 组织管理员 | 该组织中的所有仓库 |
| 仓库 | 组织管理员或仓库配置 | 单个仓库 |
这种关系是叠加式的:组织和仓库蓝图是在企业蓝图的基础上继续构建的,而不是替代它。每次构建时,都会先运行企业蓝图,以建立基线环境。接着运行组织蓝图,添加团队特定的配置。最后,再运行各个仓库的蓝图,完成项目特定的设置。
有关组织蓝图和仓库蓝图之间关系的说明,请参阅 蓝图作用域。
前往 设置 > Devin 的基础环境,定义企业蓝图。其格式与 org 和 repo 蓝图相同,包含 initialize、maintenance 和 knowledge 三个部分。
在每次构建期间,企业蓝图都会最先运行,先于 org 和 repo 蓝图。这意味着在企业级安装的工具和运行时可供所有下游蓝图使用。
企业蓝图适用于每个组织都需要的工具和配置。常见用例:
在整个企业范围内统一固定语言版本,确保每个团队都使用相同的工具链:
initialize:
- name: "Install Python 3.12"
uses: github.com/actions/setup-python@v5
with:
python-version: "3.12"
- name: "Install Node.js 20"
uses: github.com/actions/setup-node@v4
with:
node-version: "20"
- name: "Install Go 1.22"
uses: github.com/actions/setup-go@v5
with:
go-version: "1.22"
安装各项目都必须使用的扫描和审计工具:
initialize:
- name: "Install security tools"
run: |
npm install -g snyk
pip install safety bandit
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh
将公司专用工具分发到各个环境中:
initialize:
- name: "Install internal CLI"
run: |
curl -L https://internal.example.com/cli/latest/linux-amd64 \
-o /usr/local/bin/internal-cli
chmod +x /usr/local/bin/internal-cli
将软件包管理器配置为使用你的内部仓库:
initialize:
- name: "Configure internal registries"
run: |
npm config set registry https://npm.internal.example.com/
pip config set global.index-url https://pypi.internal.example.com/simple/
安装企业 CA 证书并配置代理设置:
initialize:
- name: "Install corporate certificates"
run: |
cp "$FILE_CORPORATE_CA_CERT" /usr/local/share/ca-certificates/corporate-ca.crt
update-ca-certificates
echo 'export NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/corporate-ca.crt' >> ~/.bashrc
在构建过程中,每个层级的步骤都会按固定顺序执行。较前层级的输出可供后续层级使用。在企业级安装的工具无需重新安装,即可直接在组织和仓库蓝图中使用。
一次构建会按以下顺序创建新的快照:
1. Enterprise blueprint (runs in ~):
a. initialize
b. maintenance
2. Organization blueprint (runs in ~):
a. initialize
b. maintenance
3. Clone all repositories (up to 10 concurrent)
4. For each configured repo, in the order shown in Settings
(runs in ~/repos/<repo-name>):
a. initialize
b. maintenance
5. Health check, then snapshot is saved
各层级是叠加生效的:仓库蓝图可以使用由组织或企业蓝图安装的工具。较低层级不能覆盖较高层级已设置的内容。构建通常需要 5–15 分钟。单个命令会在 1 小时后超时。
所有层级中的 knowledge 条目都会被汇总并提供给 Devin。如果多个层级定义了同名的 knowledge 条目,它们都会一并包含在内。它们不会相互覆盖。
企业管理员可以在企业级定义 secrets。这些 secrets 会在每一次构建和每一次会话期间,作为环境变量在所有组织中可用,包括企业级、org 级和 repo 蓝图步骤。
对于整个公司范围内共享的凭据,请使用企业级 secrets:
- 内部软件包仓库令牌
- 企业代理身份验证
- 内部服务共用的 API key
- 企业工具的许可证密钥
企业级 secrets 在 Enterprise-wide setup 页面中管理,也就是配置企业蓝图的同一页面。前往 设置 > Devin 的基础环境,即可在同一处管理蓝图和 secrets。
管理企业级 secrets 需要 ManageAccountResources 权限。
如果某个 org secret 与企业级 secret 同名,则 org secret 优先生效。这样各个组织就可以在需要时覆盖企业级默认设置。
企业管理员可以触发一次重建,并将其级联到所有组织。这在以下情况下很有用:
- 你更新了企业蓝图 (例如,将 Python 从 3.11 升级到 3.12)
- 你轮换了企业密钥
- 你需要在安全补丁后刷新所有环境
在 设置 > Devin 的基础环境 中触发企业范围内重建。每个组织的构建都会使用更新后的企业蓝图运行,随后再应用其各自的组织蓝图和仓库蓝图。
企业范围内重建会遵循每个组织各自的构建队列。如果某个组织已经有构建正在进行中,由企业触发的重建会排在其后。如果某个构建已经在队列中,它会被取消
并由企业触发的重建替代。
企业管理员可控制哪些组织使用声明式配置,哪些组织继续使用经典环境设置。Rollout 页面可帮助你查看所有组织的采用状态,并逐步迁移各个组织。
有关 rollout 状态、按组织覆盖以及分阶段迁移 playbook 的详细说明,请参阅迁移你的企业。