我通过在 Travis 上复制我的开发设置解决了这个问题。
解决这个问题的关键在于为 Travis 提供访问 GitHub 的方法。为此,请登录 GitHub 并转到个人访问令牌页面。
您将看到一个表单,其中包含您的令牌名称以及您希望授予访问权限的字段。填写诸如“Travis CI Pull Repo”之类的名称,然后选择“repo”部分。其他都不是必需的,因此无需访问它们。页面底部是一个绿色按钮“生成令牌”。
返回代码编辑器,如果您还没有 .travis.yml 文件,请在项目的根目录中创建一个文件。下一步我们将使用 RubyGem,因此如果您没有安装 Ruby gem,则需要下载它。您可以通过在终端中运行gem -v 来检查您是否安装了它。
如果这样做,请在终端中运行以下命令来安装 Travis RubyGem:
gem install travis
接下来,在终端中,确保您在项目的根目录中工作,并使用 Travis gem 将访问令牌添加到您的 .travis.yml 文件中:
travis encrypt GH_TOKEN="token-from-github-goes-here" --add
如果你成功了,你的.travis.yml 文件应该有一堆随机文本和一个加密的令牌保存:
env:
global:
secure: "lots-of-seemingly-random-characters"
就是这样! Travis 现在应该可以拉取(如果您喜欢的话,也可以推送)到您的 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 链接。
- 最后,我们回到主项目(我们正在运行 Travis 的项目)。请注意,此名称必须与 GitHub 上存储库的名称匹配,因为这是 Travis 将使用的名称。
此外,我们需要实际使用上面创建的链接,所以在安装部分添加以下行:
install:
- npm install
- npm link my-dependency
确保将 npm 链接放在 npm install 之后,因为默认情况下 npm install 会删除所有链接(对于我们这些使用 npm link 的人来说,这是一个非常烦人的错误)。