Я решил эту проблему, скопировав свои настройки разработки на Travis.
Ключом к решению этой проблемы является предоставление Трэвису способа доступа к GitHub. Для этого войдите в GitHub и перейдите на страницу токенов личного доступа.
Вы увидите форму с полем для имени вашего токена и разрешений, к которым вы хотите предоставить доступ. Введите имя, например «Travis CI Pull Repo», и выберите раздел «РЕПО». Ничего другого не нужно, поэтому нет необходимости предоставлять к ним доступ. Внизу страницы находится зеленая кнопка «Генерировать токен».
Вернувшись в редактор кода, создайте файл .travis.yml
в корневом каталоге вашего проекта, если у вас его еще нет. На следующем шаге мы будем использовать RubyGem, поэтому, если у вас не установлены гемы Ruby, вам необходимо его скачать. Вы можете проверить, установлен ли он, запустив gem -v
в терминале.
Если вы это сделаете, запустите в терминале следующее, чтобы установить Travis RubyGem:
gem install travis
Далее, в терминале, убедитесь, что вы работаете в корневом каталоге вашего проекта, и используйте гем Travis, чтобы добавить токен доступа в ваш файл .travis.yml:
travis encrypt GH_TOKEN="token-from-github-goes-here" --add
Если вы добились успеха, ваш .travis.yml
файл должен содержать несколько случайных текстов с сохраненным зашифрованным токеном:
env:
global:
secure: "lots-of-seemingly-random-characters"
Вот и все! Теперь Трэвис сможет вытащить (и подтолкнуть, если это то, что вам нужно) в ваш репозиторий GitHub.
Очевидно, ваш файл .travis.yml
может сильно отличаться от моего, но в его основе я настроил .travis.yml
следующим образом:
language: node_js
node_js:
- '6'
cache:
directories:
- node_modules
install:
- npm install
script:
- npm run lint
- npm run test
env:
global:
secure: "lots-of-seemingly-random-characters"
Чтобы добавить клонирование и связывание зависимости, добавьте раздел before_install
со следующими командами:
before_install:
- git config credential.helper "store --file=.git/credentials"
- echo "https://${GH_TOKEN}:@github.com" > .git/credentials
- cd ..
- git clone https://github.com/my-name/my-dependency.git my-dependency
- cd my-dependency
- npm install
- npm link
- cd ../my-main-project
Что это на самом деле делает?
- Мы настроили Git для использования нашего сохраненного токена доступа.
- Мы поднимаемся на один каталог вверх и клонируем хранилище в новую папку с тем же именем, что и хранилище.
- Заходим в хранилище и устанавливаем его зависимости.
Мы создаем глобальную ссылку NPM.
- Наконец, мы возвращаемся к основному проекту (тот, на котором мы работаем с Трэвисом). Обратите внимание, что это имя должно совпадать с именем хранилища на GitHub, поскольку это имя будет использовать Трэвис.
Кроме того, нам нужно использовать созданную выше ссылку, поэтому в разделе установки добавьте следующую строку:
install:
- npm install
- npm link my-dependency
Убедитесь, что вы поставили ссылку npm после npm install
, так как по умолчанию npm install
уничтожит любые ссылки (очень досадная ошибка для тех из нас, кто использует npm link
).