文件漫游
1149 字约 4 分钟
云原生开发环境采用按需使用,闲置自动销毁策略
为了避免开发环境销毁后,环境内的未提交的代码和配置文件丢失,云原生开发环境采用以下文件漫游策略:
工作区未提交代码
在当前工作区目录/workspaces
修改代码后,如果未及时提交,无需担心修改记录丢失,环境回收时,会将修改的代码备份到远端。 重建开发环境后,未提交的代码会恢复到工作区。
1、备份和恢复方式
- 开发环境销毁时备份:将未提交代码,通过
git stash
方式提交到远程不可见分支,即利用仓库的存储能力实现备份。 - 开发环境重建时恢复:将远程不可见分支的备份代码,通过
git stash pop
方式恢复到工作区。
注意:工作区存在大文件,可能导致备份失败,尽量避免将大文件如 1G 以上安装包保存在工作区。
2、恢复策略说明
- 已销毁环境基础上重建环境:恢复原环境的备份代码。
- 分支上启动开发环境:恢复该分支的最新一份备份代码。
注意:代码恢复后远程不可见分支的备份将被删除,即每次备份的代码仅可恢复一次。新的环境销毁时会产生新的备份代码。
提示
.gitignore
文件中声明的内容不会被备份
定时备份策略
为了避免上述备份策略时效,云原生开发同时采用了定时备份策略,定时将未提交代码打包并上传到本地。
- 备份方式:每 5 分钟获取一次工作区未提交代码,并生成压缩包上传。
- 下载方式:可在
我的云原生开发
列表页下载备份代码压缩包。
注意:
- 单个文件超过 100MB,该文件不会备份。
- 备份代码压缩包超过 100MB 也不会被备份。
非工作区文件
远程开发支持部分非工作区目录下文件漫游。
在环境销毁后,再次创建开发环境,漫游的文件可恢复到开发环境中。
最大漫游容量:64MB,超过最大容量将报错且无法漫游。
漫游内容
以下文件或文件夹会按用户维度进行漫游, 对所有项目有效果(~
: 当前用户的主目录,一般是 /root
目录):
~/.gitconfig
: git 全局配置文件~/.local/share/code-server/User/settings.json
:WebIDE 配置文件~/.local/share/code-server/User/snippets/*
::VSCode 相关配置~/.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 "文件不存在"
fi
2、示例二,软链文件到工作目录:
要修改漫游的配置文件,可修改工作目录的 /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)后,不会立马漫游修改内容, 而是等到开发环境销毁时,再从开发环境中取出需漫游的文件进行持久化存储
如何恢复漫游文件:
重建开发环境时,会自动将漫游的文件恢复到开发环境中
如何验证文件是否漫游成功:
修改可漫游文件后如需验证修改效果,需等到开发环境销毁后,再创建/重建开发环境才能看到修改文件的漫游效果