node.js - Gitlab-ci 没有使用我指定的节点版本
问题描述
我是 GitLab 的新手,正在尝试为我的项目设置 CI/CD 系统。
我的.gitlab-ci.yml
文件如下:
image: node:10.15.3
cache:
paths:
- node_modules/
before_script:
- node -v
- npm install
stages:
- test
all-tests:
stage: test
script:
- npm run lint
- npm run test:unit:cov
- npm run test:server
但是,该node -v
行6.12.0
没有输出10.15.3
,并且我的测试失败了,因为节点版本错误。
如何告诉 GitLab CI 使用 Node 10.15.3?
解决方案
您没有标记您的工作,因此它可能在 ashell-executor
而不是 a上运行docker-executor
。检查.dockerenv
您的工作规范以确保您在容器中运行;
鉴于这个简单的管道(基于你的):
image: node:10.15.3
before_script:
- node -v
stages:
- test
all-tests:
tags:
- docker
stage: test
script:
# are we in a docker-executor
- if [ -f /.dockerenv ]; then echo "docker-executor"; fi
我得到以下输出,这表明我们正在提取正确的节点映像版本:
Running with gitlab-runner 11.3.1 (0aa5179e)
on gitlab-docker-runner fdcd6979
Using Docker executor with image node:10.15.3 ...
Pulling docker image node:10.15.3 ...
Using docker image sha256:64c810caf95adbe21b5f41be687aa77aaebc197aa92f2b2283da5d57269d2b92 for node:10.15.3 ...
Running on runner-fdcd6979-project-862-concurrent-0 via af166b7f5bef...
Fetching changes...
HEAD is now at b46bb77 output container id
From https://gitlab/siloko/node-test
b46bb77..adab1e3 master -> origin/master
Checking out adab1e31 as master...
Skipping Git submodules setup
$ node -v
v10.15.3
$ if [ -f /.dockerenv ]; then echo "docker-executor"; fi
docker-executor
Job succeeded
推荐阅读
- python - 如何使用 Python 中的 RegEx 将匹配一个模式的多个实例替换为该实例的修改版本?
- reactjs - Laravel 没有加载 React 组件
- android - 如何使用 Theme.MaterialComponents.Light 减少 radioGroup 中 radioButton 的间隙
- entity-framework-core - .Include 仅加载包含实体的第一个实例
- mustache - 如何使用 mustache.js 访问 Kibana 警报中的特定日志属性?
- python - 如果字符串包含某些子字符串,则按条件过滤
- ios - 协议中的共享实例属性
- java - 为什么这些 Character 对象不保留特征?
- c# - 如何在不使用 Uno.UI 的情况下从 Xamarin.Forms 应用程序调用 JavaScript?
- javascript - 如何在JS中逐字节读取缓冲区对象