タイトルの通りですが、調べてもなかなか方法にたどり着けなかったので記録しておきます。
今回は私がよく使っている Rails をサンプルにします。
ルートディレクトリにプロジェクトがある
フォルダ階層
root
├── .circleci
│ └── config.yml
├── app
├── bin
├── config
├── db
├── lib
:
設定ファイル
下記の例は公式から持ってきたものです。
本当はjobsの中に test
も合ったのですが、今回の説明では不要だったので削除しています。
.circleci/config.yml
version: 2.1
orbs:
ruby: circleci/ruby@1.0
node: circleci/node@2
jobs:
build:
docker:
- image: cimg/ruby:2.7-node
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD
steps:
- checkout
- ruby/install-deps
- node/install-packages:
pkg-manager: yarn
cache-key: "yarn.lock"
workflows:
version: 2
build_and_test:
jobs:
- build
サブディレクトリにプロジェクトがある
フォルダ階層
下記のようにルート直下にプロジェクトがない場合は上記の書き方では失敗します。
root
├── .circleci
│ └── config.yml
└── project
├── config.yml
├── config
├── db
├── lib
:
設定ファイル
working_directory
と checkout - path
を明示的に記述することで実現できます。
.circleci/config.yml
version: 2.1
orbs:
ruby: circleci/ruby@1.0
node: circleci/node@2
jobs:
build:
working_directory: ~/root/project <---
docker:
- image: cimg/ruby:2.7-node
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD
steps:
- checkout:
path: ~/root <---
- ruby/install-deps
- node/install-packages:
pkg-manager: yarn
cache-key: "yarn.lock"
workflows:
version: 2
build_and_test:
jobs:
- build