Skip to content

有关 runner 的 ci.yml 配置笔记

参数

cache

cache:用来存储项目的 dependencies,以使下次跑 pipline 的时候更快一些 第一次跑 pipline 的时候下载了外部的依赖了(比如说第三方 jar 包),这样下次跑 pipline 时,就不用再从网络上下载了。但是 stage 之间的中间产物的传递应该用 artifacts。

!!! chache 有全局和某个步骤中,这里只举例步骤中的 !!!

yaml
cache:
  key: "${CI_PROJECT_PATH_SLUG}_${CI_COMMIT_REF_SLUG}"
  paths:
    - node_modules/
    - .yarn/
    - yarn.lock
  #policy: push #push || pull 表示只拉或者只推,默认开始拉结束推

artifacts

artifacts:用来在 stage 之间传递 stage 生成物 同一个 pipline 里不同的 stage 之间共享生成物的,在不同的 pipline 之间不可用。

!!! artifacts 只在某个步骤中,用于输出产物,提供给界面下载 !!!

yaml
artifacts:
  paths:
    - dist

space&&colon

在我的配置里有个修改 npm 和 yarn 指向私有仓库用脚本

yaml
- echo -e "registry=${NPM_REG_SERVER}" >> .npmrc
- echo -e "npmRegistryServer: \"${NPM_REG_SERVER}\"" >> yarnrc.yml

可以看到,明显npmRegistryServer: 被识别为了一个参数,这是由于 yaml 规则所限制,为了避免识别,可以使用

yaml
'echo -e "npmRegistryServer: \"${NPM_REG_SERVER}\"" >> yarnrc.yml'

但是我里面又包含了${NPM_REG_SERVER}自定义参数,一定使用''包裹,内部就不再被识别,这时可以考虑使用|或者>来解决,如:

yaml
- |
  echo -e "npmRegistryServer: \"${NPM_REG_SERVER}\"" >> yarnrc.yml
yaml
- >
  echo -e "npmRegistryServer: \"${NPM_REG_SERVER}\"" >> yarnrc.yml