将环境变量从Gitlab docker executor传递给image

时间:2017-08-23 09:45:10

标签: node.js docker gitlab gitlab-ci gitlab-ci-runner

在我的测试设置中,我使用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 executor?

1 个答案:

答案 0 :(得分:2)

https://jsfiddle.net/n7oo7dLk/中所列,您可以使用variables关键字在配置文件中指定环境变量。在你的情况下,这将是

image: node:6

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

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