Continuous integration 为什么Travis CI能够';无法连接到GitHub API?

Continuous integration 为什么Travis CI能够';无法连接到GitHub API?,continuous-integration,composer-php,travis-ci,http-status-code-403,github-api,Continuous Integration,Composer Php,Travis Ci,Http Status Code 403,Github Api,我正在Travis CI中为我的用户运行以下命令: 我正在手动安装composer,因为我想用它来使用sudo,因为它只为用户安装 我遇到的错误是: Updating dependencies (including require-dev) - Installing jakub-onderka/php-console-color (0.1) Downloading: Connecting... Failed to download jakub-onderka/php-conso

我正在Travis CI中为我的用户运行以下命令:

我正在手动安装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"
我的建议是:

删除:

  • curl-sShttps://getcomposer.org/installer |sudo php--install dir=/usr/local/bin--filename=composer
  • sudo composer-nqq更新
第一行:不需要,因为Composer是预先安装的,当您使用
语言:php

第二行:最好执行
composer安装
,因为
update
使用来自
composer.lock
的数据(如果您的repo包含)。这里不需要sudo

(关于Travis CI上的
sudo
用法的旁注: sudo仅在非基于容器的基础设施中可用。我不知道您是否真的需要它,但也许您可以通过在
travis.yml
中设置
sudo:false
来切换到更快的基于容器的基础设施,请参见。只是一个提示。)


添加到
travis.yml

before_install:
  - composer self-update
  - composer install --no-interaction --optimize-autoloader
第一行:更新这个Travis实例的(可能)过时的编写器

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


在下载“Dist”或下载“Source”之间切换的附加参数是
--首选Dist
--首选Source

所以它不是

  • -composer安装--首选dist--无交互--优化自动加载程序

  • -composer安装--首选源代码--无交互--优化自动加载程序

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

如果这不是一个暂时的问题,那么您的作曲家似乎遇到了Github API速率限制。GitHub API只允许少量未经身份验证的用户请求。您可以通过从Travis在Github进行身份验证来提高API限制

请参阅常见问题:


请先使用
首选源代码
进行尝试。

最可能的错误原因是从github下载的数量有限。您需要做的是在您的github帐户中,并使用

composer config-g github-oauth.github.com

资料来源:

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