团队配置

如果你在一个团队,并希望团队成员使用 dawn 时能有一些公共配置,或下发一些统一的构建规则,那么可以搭建一个「私有的中心服务」

Dawn 的私有服务端搭建成本「极低」,不需要部署任何服务端程序,只需要有一个支持静态文件的 Web Server 即可,如果没有,在 GitHub 或 GitLab 上,新建一个 repo 也行,任意只要能托管静态文件的服务器都可以,当然你也可用基于动态服务搭建 dawn 中心服务

假如,你现在有一个 Web Server,并且可以过 http://your_server_url/<name>.yml 访问,比如

  • 推荐的模板列表: http://your_server_url/template.yml
  • 推荐的中间件列表: http://your_server_url/middleware.yml
  • 中心 Pipe 配置: http://your_server_url/pipe.yml
  • 中心 RC 配置: http://your_server_url/rc.yml

template.yml

template.yml 用于管理中心服务上的所有「推荐的模板列表」,用户在执行 dn initdn template 时列出的模板列表,就是在 template.yml 配置的列表,格式如下

front: 
  location: 'dn-template-front'
  summary: 'Front Project Template'

node: 
  location: 'dn-template-node'
  summary: 'Node.js Project Template'
  
middleware: 
  location: 'dn-template-middleware'
  summary: 'Middleware Project Template'

顶层的 key 是模板列表中的名称,在列表中唯一即可,比如上边的 frontnode,通过 location 指定模板对应的 npm package 包名

location 还可以指定 scopeversion,示例

front: 
  location: '@scope/dn-template-front'
  summary: 'Front Project Template'

node: 
  location: 'dn-template-node@1.0.0'
  summary: 'Node.js Project Template'

middleware: 
  location: '@scope/dn-template-middleware@1.0.0'
  summary: 'Middleware Project Template'

Dawn 在连接对应的 server 后,便可以通过 dn template [keyword] 查询对应的模板

注意 所有不在中心服务 template 列表中的模板,也是可直接用于初始化工程的,需要用 -t--template 参数指定「模板的包名称」,如下

$ dn init -t <package_name>

package_name 可以是完整的包名称,也可以不带默认前缀。

middleware.yml

middleware.yml 用于管理「推荐的中间件列表」,格式如下

shell: 
  location: '@ali/dn-middleware-shell'
  summary: 可执行 shell 的中间件

配置格式及各字段和 template 一致,添加到 middleware.yml 中的「中间件」,在 dawn 连接到对应的 server 后,在配置 pipe 时,除了可以用完整的包名、不带前缀的包名,也可用在「中间件列表」中指定的名称,如上边示例中的 shell

Dawn 在连接对应的 server 后,可以通过 dn middleware [keyword] 查询对应的模板

pipe.yml

pipe 是团队统一的构建配置的核心,Dawn 在连接某一个 server 后,在执行对应的命令时,会先合并「远程统一的 pipe 配置」,然后,再执行对应的的 pipeline,格式如下:

# 前置规则,会合并到工程本地配置的前边
before:
  test:
    - name: lint

# 后置规则,会合并到工程本地配置的后边
after:
  test:
    - name: shell
      script:
        - echo done

如上,中心 pipe 分为 beforeafter 两大部分,每部分和本地 pipe 格式一致,上边的示例,将强制让所有工程,在执行 dn test 时都会先进行 lint 检查语法。

注意:如果本地配置中已有 lint 配置,不会重复执行。

rc.yml

我们知道,本地 .dawnrc 中支持三项配置 serverregistrycacheTTL,但是中心服务的 rc.yml 只支持 registry 一项配置,并且是在本地 .dawnrc 没有指定任何值时才会有效,也就是说本地配置高于远程配置,主要用于在切换 server 时,也能一并把 registry 也进行切换。