部署环境由管理员在「发布 › 部署环境」里管理。每个环境有自己的一组应用,改动一个环境,不会影响别的环境的应用。
| 环境 | 怎样来的 | 用来做什么 |
|---|---|---|
| 预览 | Studio 安装后自动创建 | 每个 PR 的预览,验收时亲自试一遍 |
| 预发布 | 管理员添加 | 合并后自动部署,团队上线前试用 |
| 生产 | 管理员添加,Studio 不会自动创建 | 正式运行的业务系统,每次部署都要批准 |
两种运行方式
添加环境时先选运行方式,创建后不能更换:
| 运行方式 | 应用运行在哪里 | 适合 |
|---|---|---|
| 在 Studio 内运行 | Studio 所在的服务器上,不需要 Docker。首次访问时启动,无人访问时停止 | 预览 |
| Docker | Studio 所在服务器的 Docker 上,每个应用一个容器,互相隔离 | 预发布、生产 |
Docker 方式部署时,按版本的镜像摘要拉取镜像,先启动新容器,健康检查通过后才把访问切过去;新版本一直不健康时,旧容器继续服务,这次部署失败。回滚用同样的方式部署之前的镜像。
使用 Docker 方式前,要在 Studio 的 config.yml 里打开 Docker 运行方式(releases.docker.enabled),并让运行 Studio 的用户能访问 Docker。
添加环境
- 打开「发布 › 部署环境」,点「添加环境」,选运行方式。
- 填写名称和环境 ID,例如“预发布”、
staging。环境 ID 会出现在访问地址里,创建后不能修改。 - 「访问地址规则」:应用在这个环境里的访问地址,用
{appId}代表应用,例如https://apps.example.com/{appId}/。 - Docker 环境选择「镜像仓库」,也就是 CI 推送镜像的仓库,或者新建一个,填写地址和拉取凭据。
- 设置策略,见下一节。
- 保存前点「测试连接」,确认能连通。
「应用」一栏可以设置这个环境最多容纳多少个应用,以及应用无人访问多久后停止、多久后休眠。停止后释放内存,下次访问时自动启动;休眠后还会删除解压的文件,保留配置和数据,下次访问时重新准备,需要更长时间。
受保护的环境和审批人
打开「受保护」,这个环境的每一次部署,不论由人、Agent 还是 CI 发起,包括回滚,都变成一份部署申请,等审批人批准。审批人批准时,要再输入一次应用 ID。
审批人可以选:
- 项目负责人:部署到这个应用的代码仓库所属项目的负责人;
- 管理员:所有者和管理员;
- 指定的人。
任意一位审批人批准即可;发起申请的人不能批准自己的申请。没有选审批人时,由管理员决定。审批人做什么,见 批准上线与回滚。
Studio 部署前不会自动备份应用的数据库。生产环境的数据库请自己定期备份。
预览环境
预览环境在 Studio 安装后自动创建,运行方式是在 Studio 内运行,不受保护。默认最多同时运行 20 个预览,10 分钟无人访问就停止,24 小时后休眠。
- 预览首次部署时加载示例数据,自动生成初始管理员,不包含企业的真实数据。
- PR 合并或关闭后,它的预览自动删除。
- 预览缺少某个变量时,任务页的预览区会列出缺的变量;能管理环境的人可以给整个预览环境设置,之后所有的预览都用上。
正式使用时,建议让预览用单独的域名,不和 Studio 共用同一个地址,并让运行预览的进程使用另一个系统用户,读不到 Studio 的配置,见 配置项。
环境变量
部署出来的应用读取的变量,可以设在环境上,所有在这个环境里的应用都用得上;也可以设在单个应用上。应用自己的变量优先。密钥加密保存,之后不再显示。
