首页 文章

为什么Travis CI无法连接到GitHub API?

提问于
浏览
3

我在Travis CI中为我的build运行以下命令:

before_install:
  - curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

script:
  - sudo composer -nqq update

我正在手动安装composer,因为它只是为用户安装了 sudo .

我遇到的错误是:

Updating dependencies (including require-dev)
  - Installing jakub-onderka/php-console-color (0.1)
    Downloading: Connecting...    Failed to download jakub-onderka/php-console-color from dist: The "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1" file could not be downloaded (HTTP/1.1 403 Forbidden)
    Now trying to download from source

  - Installing symfony/yaml (v2.7.4)
    Downloading: Connecting...    Failed to download symfony/yaml from dist: The "https://api.github.com/repos/symfony/Yaml/zipball/2dc7b06c065df96cc686c66da2705e5e18aef661" file could not be downloaded (HTTP/1.1 403 Forbidden)
    Now trying to download from source

我尝试过这些链接并且工作正常 .

这是否意味着Travis出于某种原因阻止了GitHub API?如果没有,我该如何解决?

通过修复,我的意思是要么知道发生了什么,要么抑制这些错误消息(例如,通过使用 composer 中的一些特殊参数或更改为JSON文件来强制从源下载) .

我的 composer.json 文件是:

{
    "config": {
        "vendor-dir": "/var/lib/vendor",
        "bin-dir": "/usr/local/bin"
    },
    "require": {
        "drush/drush": "dev-master"
    }
}

作为参考,完整 .travis.yml 看起来像:

before_install:
  - env
  - curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
  - sudo apt-get -qy update
install:
  - sudo apt-get install vagrant
script:
  - set -e # This makes build to fail on first error.
  - sudo composer -nqq update
  - make
  - make vm
after_failure:
 - sudo apt-get -qy install tree && - tree -d -L 6 # Print directory structure in the form of a tree.
 - env
sudo: true
language: php
python:
  - "5.5"

2 回答

  • 1

    我的建议是:

    去掉:

    • curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

    • sudo composer -nqq update

    第一行:不需要,因为当您使用 language: php 时,预装了Composer .

    第二行:最好执行 composer install ,因为 update 使用 composer.lock 中的数据(如果您的repo包含一个) . 这里不需要sudo .

    (关于在Travis-CI上使用 sudo 的旁注:sudo仅适用于非基于容器的基础设施 . 我不知道你是否真的需要这个,但也许你可以通过设置 sudo: false 来切换到更快的基于容器的基础设施你的 travis.yml ,见http://docs.travis-ci.com/user/workers/container-based-infrastructure/ . 只是一个提示 . )


    添加到 travis.yml

    before_install:
      - composer self-update
      - composer install --no-interaction --optimize-autoloader
    

    第一行:更新此Travis实例的(可能)过时的作曲家 .

    第二行:使用Composer安装 composer.json 中描述的依赖项 .


    在下载"Dist"或下载"Source"之间切换的附加参数是 --prefer-dist--prefer-source .

    所以它要么

    • - composer install --prefer-dist --no-interaction --optimize-autoloader

    要么

    • - composer install --prefer-source --no-interaction --optimize-autoloader

    这是否意味着Travis出于某种原因阻止了GitHub API?

    如果它不是一个临时问题,那么它似乎你的Composer正在运行Github API速率限制 . GitHub API仅允许对未经身份验证的用户进行少量请求 . 您可以通过在Travis的Github上进行身份验证来提高API限制 .

    请参阅常见问题:https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens

    请先用 prefer-source 试一下 .

  • 1

    出现错误的最可能原因是github的下载量有限 . 您需要做的是在您的github帐户中create a token并将其全局添加到您的作曲家

    composer config -g github-oauth.github.com <your-token>

    资料来源:https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens

相关问题