1
0
forked from x/ContextOS
2023-07-04 11:04:46 +08:00

78 lines
6.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

title "工作空间"
spark `Contexts 下载并启动后,会以当前运行目录为工作空间,加载启动脚本和保存数据与文件。
Contexts 不推荐使用全局的资源或家目录的文件,为了减少全局依赖与资源冲突。从而可以在一台机器上启动任意多个空间。
Contexts 推荐使用空间来管理项目与任务。`
spark `Contexts 每个空间都是一个独立的目录,与独立的守护进程。
每个空间既可以使用相同的 Contexts也可以使用不同的 Contexts即不同的工具集合。因为每个项目内容可能是不一样的使用的工具也可能是不一样的。`
chapter "创建空间"
section "启动服务"
spark `首先,启动 Contexts 服务。并打开后台管理系统。<a>http://localhost:9020/chat/portal/</a>`
shell `
./bin/ice.bin forever start
open http://localhost:9020
`
section "打开工具"
spark `如果导航栏未定制,在左边导航栏中打开运维群 -> 应用,然后在右边工作区中,找到 dream即空间管理的工具。`
spark `<a>http://localhost:9020/chat/portal/?river=operate&storm=web&index=web.dream</a>`
iframe "http://localhost:9020/chat/portal/?river=operate&storm=web&index=web.dream"
spark `或在搜索框中,直接搜索 dream 即可打开空间管理的工具。`
spark `<a>http://localhost:9020?_search=dream</a>`
iframe "http://localhost:9020?_search=dream"
spark `或是直接打开命令网页,<a>http://localhost:9020/chat/cmd/web.dream</a>`
spark demo dream
section "创建空间"
spark `点击工具栏中的创建按钮,即可打开创建对话框。`
spark `空间创建有 name、repos、binary、template 四个参数,其中 name 是必选参数指定空间名创建空间时Contexts 会默认给空间名加一个时间前缀。`
order `
repos 指定 git 仓库地址Contexts 将此仓库下载到本地,然后把此目录当成工作空间。
binary 指定 bin 文件Contexts 会自动下载并使用这个 bin 文件,来启动守护进程。
template 指定模板目录,空间创建时,会从模板目录中复制所需要的文件。
`
spark `空间创建成功后,会在 ./usr/local/work 目录下创建一个空间的目录。并启动一个守护进程。
守护进程会自动连接服务进程,从而使用服务进程提供的网页,来访问此空间。`
section "使用空间"
spark `空间创建成功后,会自动打开空间首页。之后也可以在空间工具中,随时打开任意空间的首页。`
spark `空间打开后,即可在这个空间中,使用任意工具,去完成自己的工作。`
spark `所有的工具产生的数据与文件,也只会保存在自己空间目录下,不会对其它空间有任何影响。`
spark `如果当前空间下的工具,不能满足使用,也可以随时开发,创建新的工具。`
chapter "发布空间"
spark `Contexts 中的空间,除有独立的目录与进程,用来进行资源隔离和项目管理以外,还有更多的功能特性。`
spark `虽然工作空间,默认没有分配端口,没有启动任何服务,但是可以通过服务进程作反向代理,将工作空间内的工具、文件、资源对外发布。`
section "服务源"
spark `Contexts 的工作空间启动后,可以通过服务进程中的空间管理工具来操作。
也可以在单独网页中使用。例如 redis-story 项目的首页地址是 <a>http://localhost:9020/chat/pod/20230511-redis-story</a>`
iframe "http://localhost:9020/chat/pod/20230511-redis-story"
spark `每个工作空间都可以灵活的配置自己的首页。Contexts 中的所有工具,都有自己的网页界面,都可以作为空间的首页来使用。
例如 redis-story 项目,就选择 web.code.macos.desktop 命令作为自己的首页,这样打开 redis-story 空间,就是一个电脑桌面,完全用图标和窗口来使用所有工具。`
spark `因为 Contexts 的工作空间,就是一个工作目录加一个守护进程,资源占有非常少,比虚拟机或是容器占有更少的资源。
Contexts 的工作空间,为项目管理与服务部署,提供了一个更加轻量、更加完备的解决方案。
`
spark `每个工作空间下的所有软件工具也可以单独使用。如下地址pod 和 cmd 分别指定空间名与命令名。`
spark `<a>http://localhost:9020/chat/pod/20230511-redis-story/cmd/host</a>`
iframe "http://localhost:9020/chat/pod/20230511-redis-story/cmd/host"
section "镜像源"
spark `Contexts 使用 Golang 开发所以具备了交叉编译的功能。Contexts 封装了一个编译工具 web.code.compile可以方便的将本空间的代码编译成指定系统与架构的程序并将相关资源一起打包。`
spark `<a>http://localhost:9020/chat/cmd/compile</a>`
spark `编译后的程序文件会放到空间目录的 ./usr/publish/ 目录下,通过服务进程作了一个代理,就可以在其它机器,直接下载这个空间的程序文件,并起动任意多个完全相同的空间。`
spark `这种使用方式,其实就是最快速的 devops
原始空间就是开发环境,在其它机器起动的空间就是测试环境或生产环境,
从开发环境到生产环境,之间所有环节完全打通,甚至可以做到,从开发到上线,只需要一秒钟。并且开发环境与生产环境,完全同时在线,可以实现更快速的闭环互动,全面加速整个研发流程。`
spark `如果直接用 wget 或 curl 命令,直接访问工作空间的地址,服务进程检测到请求头 UserAgent 判断出是命令行中的请求。则会直接返回空间的程序文件。
因为 bin 文件中,打包了完整的资源文件,所以这样就可以在另一台设备上,快速部署出一个完全一样的工作空间。这个命令只是简单的下载程序文件,在实际使用时,会从空间中复制一个功能更完整的下载命令。`
shell `wget http://localhost:9020/chat/pod/20230511-redis-story`
section "代码源"
spark `每个工作空间,都可以绑定一个代码库,在空间目录下的所有文件,都可以被提交到代码库里,包括代码、配置、数据等。
不同机器的上工作空间就可以通过代码库,来同步代码与数据,并且记录每次变更的信息。同一台机器上的不同空间,当然也可以共用一个代码库。`
spark `每个空间的地址,可以直接当成代码地址来使用。服务节点,会自动去查询工作空间的仓库地址,做一个内部重定向。`
shell `git clone http://localhost:9020/chat/pod/20230511-redis-story`