1. 性能简介

编程免不了要写配置文件,怎么写配置也是一门学识。YAML 是专门用来写配置文件的语言,十分简洁和弱小。

理解到一些用户在Cloud Studio开发我的项目的时候,环境上须要依赖一些组件,我的项目中也会应用到编辑器的插件。

而如果这些都须要用户本人去装置和筹备,则会十分的繁琐,也不利于用户分享本人的工作空间给其余合作共事创立正本。

因而咱们设计出了YAML模板这个性能,用于解决这个问题。

对于YAML 的简介,传送门:YAML 语言教程

2. 性能入口

性能的入口在各模板页面的内容右上角:

分为两个性能:

  1. 手动新建
  2. 导入workspcace.yml

3. 手动新建

该表繁多共有 7 项能够填充的。

  1. 环境镜像,顾名思义就是决定你模板的根本环境,提供了大多数语言的的开发环境

  1. 额定资源,目前提供 mysql 和 redis 预装置

  1. 预装插件,为工作空间默认装置 VSCode 插件,反对抉择版本。

  1. 自定义命令, 反对在不同阶段执行自定义 Shell 命令。

分为:初始化命令,启动命令,关机命令反对 tab 键跳转下一行。

  1. 环境变量,免去配置一堆默认环境变量的懊恼。

3.1 导出/导入 workspace.yml

该性能能够抉择一个在手动新建阶段导出的workspace.yml文件,能够解决多人应用同一个配置状况下须要同时配置雷同模板的懊恼。

4. 解读 workspace.yml

一个成熟的 workspace.yml 长成这样:

---# 这是模板名称name: "react-demo"# 这是模板形容description: "一个繁难YAML示例"# 这是模板的用于辨别的tagtags:- "Node.js"- "React"# 模板创立的工作空间关上时主动拉取的代码仓库repository: "https://e.coding.net/coding-public/cloud-studio-samples/react-quickstart.git"# 默认拉取的分支ref: "master"# 定义的环境变量envs:- name: "PROJECT_NAME"  value: "this is a react-demo project"# 关上工作空间主动装置插件extensions:- "msjsdiag.vscode-react-native@1.9.3"- "vscode.typescript@1.62.3"# 定义了生命周期,共分为init、start、destorylifecycle:  init:  - name: "update apt cache"    command: "apt update"  - name: "install nginx"    command: "apt install -y nginx"  start:  - name: "run nginx"    command: "service nginx start"# sidecar定义了须要启动的从属组件,目前仅反对mysql和redissidecar:  mysql:    enabled: true    password: "123456"    database: "test"  redis:    enabled: true    password: "123456"# 初始镜像id,请勿手动批改image_id: 5

让咱们来一项项拆解。

  • envs: 对应初始环境变量
  • extensions

定义的是编辑器中须要应用的插件,比方Maven for Java等等

  • lifecycle

lifecycle 中定义的是整个我的项目的生命周期各个阶段须要执行的内容,各个定义的生命周期如下图所示:

  1. init:首次创立空间后的启动,启动后执行。
  2. start:日常启动空间后执行。
  3. destroy:进行空间前执行。

留神:因为运行机会的起因,initstart 阶段的 lifecycle 命令不能应用由代码仓库中的文件、脚本等内容形成的可执行命令

  • sidecar

罕用的组件,反对以sidecar定义,目前反对的组件有mysqlredis,如果你的我的项目须要应用到这两类组件,则定义enabledtrue即可,否则能够置为false

sidecar 模式运行原理如下图,在工作空间中,用户所能看到的为编辑器局部,而 mysqlredis 是以同级的形式进行运行,通过网络端口连通。

  1. 应用YAML模板

以电商模版为例阐明如何应用

电商模版应用 SpringBoot(2.1.5)Java JDK(11)版本。

---name: "java-demo"description: "一个繁难YAML 示例"tags:- "Java"ref: "master"extensions:- "Pivotal.vscode-spring-boot"- "vscjava.vscode-maven@0.34.0"lifecycle:  init:  - name: "update apt cache"    command: "apt update"  - name: "install mysqlclient"    command: "apt-get install -y mysql-client"  start:sidecar:  mysql:    enabled: true    password: "123456"    database: "uzymall"  redis:    enabled: true    password: "uzymall"image_id: 4

定义中用到了springbootmaven的插件,初始化只须要装置mysqlclient,用于开发调试时登录数据库查看数据,同时,数据组件中应用到了mysql组件,因而只关上了mysql的定义。

我的项目中对应文件批改:

关上空间后,因为也定义了.vscode/preview.yml的内容,因而空间每次关上会执行指定的run命令,即刻能够预览本电商利用启动后的页面成果。

图示为空间关上实现后的成果:

您能够通过以下两个 链接查看由该性能生成的工作空间,并能够将workspace.yml复制下来体验应用:

  1. https://cloudstudio.net/templates/hBswiZB0M4Z

  1. https://cloudstudio.net/templates/hQGhL1EYuEF

6. 如何应用 sidecar