使用npm

时间:2017-01-20 16:46:58

标签: docker gitlab gitlab-ci gitlab-ci-runner

这些天我正在为我的项目苦苦挣扎GitLab CI设置。设置并不像Travis CI那么简单。我花了很多时间调试这个,而我发现的所有内容都不符合我的要求

上下文

我有一个使用rvmnpm以及postgresql的Rails项目。我构建了一个安装了rvmnpm的自定义Docker镜像。但是,在运行之前,我必须获得与ruby中相对应的node.gitlab-ci.yml版本:

image: "my-rvm-npm-image"

services:
  - postgres:9.3-alpine

variables:
  POSTGRES_DB: db
  POSTGRES_USER: user
  POSTGRES_PASSWORD:

cache:
  untracked: true
  key: "$CI_BUILD_REF_NAME"
  paths:
    - node_modules/

stages:
  - build
  - rspec
  - npm

build:
  stage: build
  script:
    - sudo chown -R $(whoami) /cache
    - /bin/bash -l -c "rvm install $(cat .ruby-version)
      && rvm use $(cat .ruby-version)
      && gem install bundle && bundle install --jobs $(nproc) --path /cache
      && source ~/.nvm/nvm.sh && nvm install && npm install npm -g && npm install
      && bundle exec rake db:test:prepare"

rspec:
  stage: rspec
  script:
    - bundle exec rake
npm:
  stage: npm
  script:
    - npm test

请注意,此.gitlab-ci.yml文件仍为failedbundle install将与GitLab运行器配置中的/cache一样:

[[runners]]
  name = "xxxx"
  url = "URLabc.com"
  token = "myprojectoken"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "my-rvm-npm-image"
    privileged = true 
    disable_cache = false
    volumes = ["/home/ci/cache:/cache", "/home/ci/builds:/builds"]
  [runners.cache]

buildscache文件夹是主机绑定的。这样我就可以为下一次构建保留bundle install缓存。

我的问题

build个职位通过,但rspecnpm失败/bin/bash: bundle: command not found。似乎bundle没有传递给其他工作。我知道我应该使用artifacts传递给其他工作,但我已经将它作为缓存,我应该有

我想实现这些目标:

  • 每次运行缓存bundle install,因为从头开始需要10~15分钟重建,并传递给rspec作业来运行测试。
  • 同时从node_modules缓存npm install并传递给npm工作。
  • rvmnpm安装的任何建议,因为我不希望在每个命令之前使用丑陋的方式bash -l -c

0 个答案:

没有答案