1010 字约 3 分钟
云原生开发环境采用按需使用,闲置自动销毁策略
为了避免开发环境销毁后未提交代码和配置文件丢失,云原生开发采用以下代码备份和文件漫游策略:
工作区代码备份
对于工作区未提交代码,我们会每 5 分钟备份一次
定时备份策略
为了避免上述备份方式失败,云原生开发同时采用了定时备份策略,定时将未提交代码打包并上传。
- 备份:每 5 分钟获取一次工作区未提交代码,并生成压缩包上传。
- 下载:可在
我的云原生开发列表页,下载备份代码压缩包。 - 删除:可在
我的云原生开发列表页,删除开发环境历史记录时会删除该备份
提示
- 单个文件超过 100MB,该文件不会备份。
- 备份代码压缩包超过 100MB 也不会被备份。
非工作区文件漫游
远程开发支持部分非工作区目录下文件漫游。
在环境销毁后,再次创建开发环境,漫游的文件可恢复到开发环境中。
最大漫游容量:16MB,超过最大容量将报错且无法漫游。
漫游内容
以下文件或文件夹会按用户维度进行漫游, 对所有项目有效果(~: 当前用户的主目录,一般是 /root 目录):
~/.gitconfig: git 全局配置文件~/.local/share/code-server/User/settings.json:WebIDE 配置文件~/.local/share/code-server/User/snippets/*:WebIDE 相关配置~/.local/share/code-server/User/keybindings.json:WebIDE 快捷键配置~/.cnb: 用户可按需在该目录下新增个人环境所需配置文件。
关于 ~/.cnb 目录的使用说明:
- 新增配置文件:如果仓库需要新增个人配置文件
.env.local, 用于存储仓库所需的个人环境变量,可在~/.cnb目录下新增.env.local文件 - 在环境启动后可配置脚本任务将
~/.cnb/.env.local复制或软链到工作目录(默认为/workspace),.cnb.yml配置如下 - 在
.gitignore中新增忽略文件.env.local,避免个人配置文件被提交到仓库
1、示例一,复制文件到工作目录:
要修改漫游的配置文件,需直接修改 /root/.cnb/.env.local
# .cnb.yml
$:
vscode:
- name: vscode
services:
- vscode
stages:
- name: 复制 .env.local 文件到工作目录(仓库根目录)
# ./ 是工作目录,默认为 /workspace
script: |
if [ -e "/root/.cnb/.env.local" ]; then
cp -f /root/.cnb/.env.local ./
else
echo "文件不存在"
fi2、示例二,软链文件到工作目录:
要修改漫游的配置文件,可修改工作目录的 /workspace/.env.local(软链方式会同步修改源文件)
# .cnb.yml
$:
vscode:
- name: vscode
services:
- vscode
stages:
- name: 软链 .env.local 文件到工作目录(仓库根目录)
# ./ 是工作目录,默认为 /workspace
script: |
if [ -e "/root/.cnb/.env.local" ]; then
ln -sf /root/.cnb/.env.local ./.env.local
else
echo "文件不存在"
fi漫游原理和时机
漫游时机:
用户在开发环境修改配置(如 settings.json)后,不会立马漫游修改内容, 而是等到开发环境销毁时,再从开发环境中取出需漫游的文件进行持久化存储
如何恢复漫游文件:
重建开发环境时,会自动将漫游的文件恢复到开发环境中
如何验证文件是否漫游成功:
修改可漫游文件后如需验证修改效果,需等到开发环境销毁后,再创建/重建开发环境才能看到修改文件的漫游效果
提示
注意:
- 同时打开多个开发环境,后销毁的开发环境的漫游内容会覆盖先销毁的开发环境的漫游内容。
- 通过
kill 1关闭开发环境,无法漫游成功。 - 如果需要漫游的文件是一个软链,我们将漫游软链的原始文件,而不是软链,目的是避免原始文件丢失。如果软链的原始文件不存在,则不进行漫游。