为什么 Travis CI 无法连接到 GitHub API?
Why Travis CI can't connect to GitHub API?
我 运行 在 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"
我的建议是:
删除:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
sudo composer -nqq update
第一行:不需要,因为 Composer 是预装的,当你使用 language: php
.
第二行:最好执行 composer install
,因为 update
使用来自 composer.lock
的数据,如果你的 repo 包含一个的话。这里不需要sudo。
(关于 sudo
在 Travis-CI 上用法的旁注:
sudo 仅在基于非容器的基础架构中可用。我不知道你是否真的需要这个,但也许你可以通过在 travis.yml
中设置 sudo: false
来切换到更快的基于容器的基础设施,请参阅 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
Does it mean Travis is blocking GitHub API for some reason?
如果这不是临时问题,那么您的 Composer 似乎 运行 进入了 Github API 速率限制。 GitHub API 只允许对未经身份验证的用户进行少量请求。您可以通过在 Github 从 Travis 进行身份验证来提高 API 限制。
查看常见问题解答:https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens
请先用prefer-source
试试
错误的最可能原因是 github 的下载量有限。您需要做的是 create a token 在您的 github 帐户中并使用
将其全局添加到您的作曲家
composer config -g github-oauth.github.com <your-token>
来源:https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens
我 运行 在 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"
我的建议是:
删除:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
sudo composer -nqq update
第一行:不需要,因为 Composer 是预装的,当你使用 language: php
.
第二行:最好执行 composer install
,因为 update
使用来自 composer.lock
的数据,如果你的 repo 包含一个的话。这里不需要sudo。
(关于 sudo
在 Travis-CI 上用法的旁注:
sudo 仅在基于非容器的基础架构中可用。我不知道你是否真的需要这个,但也许你可以通过在 travis.yml
中设置 sudo: false
来切换到更快的基于容器的基础设施,请参阅 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
Does it mean Travis is blocking GitHub API for some reason?
如果这不是临时问题,那么您的 Composer 似乎 运行 进入了 Github API 速率限制。 GitHub API 只允许对未经身份验证的用户进行少量请求。您可以通过在 Github 从 Travis 进行身份验证来提高 API 限制。
查看常见问题解答:https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens
请先用prefer-source
试试
错误的最可能原因是 github 的下载量有限。您需要做的是 create a token 在您的 github 帐户中并使用
将其全局添加到您的作曲家composer config -g github-oauth.github.com <your-token>
来源:https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens