Panshul
Panshul

Reputation: 1084

yarn command not found in gitlab ci

I am trying to configure my gitlab-ci to use yarn install instead of npm install

My current gitlab-ci.yml looks like:

image: node:6.9.4

cache:
  paths:
  - node_modules/
  - .yarn

before_script:
  - apt-get update -qq && apt-get install -qy libelf1

stages:
  - test

test_core:
  stage: test
  script:
  - yarn config set cache-folder .yarn
  - yarn install
  - npm run build
  - npm run test
  tags:
    - 2gb

But the build fails with the error: /bin/bash: line 48: yarn: command not found

is there something I am missing? I tried installing yarn with:

curl -o- -L https://yarnpkg.com/install.sh | bash

this gave me same error, probably because I need to reload the bash environment for the yarn command to become available.

The above config works perfect with npm install.

Please help me resolve this. If there is something missing in my config file or there is something wrong with the gitlab-ci. Thanks.

Upvotes: 14

Views: 29316

Answers (5)

erez taiar
erez taiar

Reputation: 66

The issue is with the shell not knowing the path to yarn In the home folder for gitlab-runner you need to add the path to yarn in the startup files https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

Just add "export PATH=$PATH:/path/to/yarn" at the end of your startup files

Upvotes: 0

W.Perrin
W.Perrin

Reputation: 4715

I use image:node:latest and sometimes it prompts the error. Clear Runner Caches do the job for me. Maybe the runner did not recover to the correct state after doing other jobs.

Upvotes: 3

Kas Elvirov
Kas Elvirov

Reputation: 7990

I solved it by using npx (package runner). It's better then extending docker-image only for this purpose

npx yarn someCommand

Upvotes: 1

Dennis Mende
Dennis Mende

Reputation: 67

Add the following to your ci script after yarn got installed:

export PATH=$HOME/.yarn/bin:$PATH

Upvotes: 3

Panshul
Panshul

Reputation: 1084

Solved it by using the latest official node docker image. Since image: 6.10.0, yarn is installed by default in the image.

But if you need node-gyp to build any package, it needs to be installed by adding a line to the script:

yarn global add node-gyp

Upvotes: 19

Related Questions