将环境变量从 Gitlab docker 执行器传递到图像

Pass environment variable from Gitlab docker executor to image

在我的测试设置中,我使用 docker 执行器来 运行 我的构建。几乎我们所有的项目 运行 都在一个官方节点图像上(即 node:6)。

默认情况下,这些官方图像的日志记录级别设置为输出相当高。

根据官方文档,可以禁用https://github.com/nodejs/docker-node/blob/master/README.md#verbosity

Verbosity

By default the Node.js Docker Image has npm log verbosity set to info instead 
of the default warn. This is because of the way Docker is isolated from the 
host operating system and you are not guaranteed to be able to retrieve the 
npm-debug.log file when npm fails.

When npm fails, it writes it's verbose log to a log file inside the container. 
If npm fails during an install when building a Docker Image with the docker 
build command, this log file will become inaccessible when Docker exits.

The Docker Working Group have chosen to be overly verbose during a build to 
provide an easy audit trail when install fails. If you prefer npm to be less 
verbose you can easily reset the verbosity of npm using the following 
techniques:

Dockerfile

If you create your own Dockerfile which inherits from the node image you can 
simply use ENV to override NPM_CONFIG_LOGLEVEL.

FROM node
ENV NPM_CONFIG_LOGLEVEL warn
...

Docker Run

If you run the node image using docker run you can use the -e flag to override 
NPM_CONFIG_LOGLEVEL.

$ docker run -e NPM_CONFIG_LOGLEVEL=warn node ...

NPM run

If you are running npm commands you can use --loglevel to control the 
verbosity of the output.

$ docker run node npm --loglevel=warn ...

但是当我从我的 gitlab-ci.yml 文件中引用 docker 图像时,就像这样:

image: node:6

test:
    script:
        - npm install

如何将环境变量传递给我的 docker 执行程序以设置日志记录级别?

gitlab-ci reference中所列,您可以在配置文件中使用variables关键字指定环境变量。在你的情况下,这将是

image: node:6

test:
    variables:
        NPM_CONFIG_LOGLEVEL: warn
    script:
        - npm install

或者,您可以将 --loglevel=warn 添加到 CI 配置脚本部分的所有 node 命令。