Node.js
CircleCI

CircleCI2のMachineExecutorなマシンでNode(v8)とYarnを使う

MachineExecutorなマシン
https://circleci.com/docs/2.0/executor-types/

# こっちじゃなく
# docker:
#   - image: ...

# こっち
machine:true

絶対もっといい方法あるはず😅

問題

マシンにsshした後にnvmするとヘルプが表示されます。「よーし、じゃあnvmで入れちゃおう」と思ったけどちょっとハマったのでメモ。
ステップ中でrun: nvmとかしても「nvmなんてコマンドないぜ」と怒られてしまいます。runを実行する前に.bashrcとか読まれてないみたい。多分。

解決

source.bashrcを読み込む。/home/circleci/.bashrcというファイルにnvmの事とか色々書かれてるのでこれを使います。また、(2017年8月9日現在)デフォルトで入ってるのは6.xなので8.xを入れます。

yarnnpmでいれちゃいます。

- run: |
    source /home/circleci/.bashrc
    nvm install 8
    npm i -g yarn

ちなみに、ここで6.xをnvm uninstall 6したら駄目でした。
run:毎に毎回.bashrcを読み込んでない状態で始まるのと、source .bashrcした時に6.xを探しに行ってしまい無いとエラーを返してciが失敗してしまいます。

.bashrcを読んでないので、以降のステップでいきなりyarnとかしても、「yarnなんてコマンドないぜ」と怒られます。なので、nodeに関係あるすべてのrun.bashrcを読み込んで、「8.xを使うぜ」と言ってあげることでどうにか先に進めます。

こんな感じです。

- run:
    name: Install node & yarn
    command: |
      source /home/circleci/.bashrc
      nvm install 8
      npm i -g yarn
- run:
    name: Show versions
    command: |
      source /home/circleci/.bashrc
      nvm use 8
      node -v
      yarn -V
- run:
    name: Yarn
    command: |
      source /home/circleci/.bashrc
      nvm use 8
      yarn