3

我跑在特拉維斯CI以下命令我build爲什麼Travis CI無法連接到GitHub API?

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

script: 
    - sudo composer -nqq update 

我手動安裝作曲家我想用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" 

回答

1

我的建議是:

刪除:

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

第一行:不需要的,因爲作曲家是預安裝,當您使用language: php

第二行:它更好地執行composer install,因爲update使用的數據來自composer.lock,如果您的回購包含一個。這裏不需要sudo。

(上sudo上特拉維斯-CI使用旁註: 須藤只有在非containainer基礎架構可我不知道你是否真的需要這一點,但也許你可以切換到基於更快的容器infrastrucutre通過在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 

第一line:更新此Travis實例(可能)過時的作曲家。

第二行:在Composer中安裝composer.json中描述的依賴關係。


的其他參數,以下載「DIST」或下載「源」是--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先試用一下。