Composer install 被熔斷

(圖說:現代 composer 的創作環境,不只音符繚繞更是線材繚繞而產生相依性。圖片來源。)

最近熔斷機制正夯,手邊的幾個 Laravel 專案,最近也跟上潮流,被熔斷惹。

起因

近期零散收到來自 AWS CodeBuild build fail 的通知,錯誤訊息大致如下:



Installing ocramius/package-versions Failed to download ocramius/package-versions from dist: Could not authenticate against github.com

Now trying to download from source
Installing ocramius/package-versions (1.4.2): Cloning 44af6f3a2e

[RuntimeException]

Failed to clone https://github.com/Ocramius/PackageVersions.git, git was not found, check that it is installed and in your PATH env.
sh: 1: git: not found

都停在 composer install 上頭。

暫時對策

一開始發現這個情況時,請 AWS CodeBuild retry 就過去了,但隨著時間的推移,相同/類似原因的 build failure rate 越來越高,已達到需要面對它的標準。看到 git: not found 也曾想過把 git 裝上去,但這招治標不治本,因為這是個錯誤處理程序裡頭的次要流程,不該解在這個位置。

確認真因

在 composer 文件中有個段落提到「API rate limit and OAuth tokens」,是遇到 GitHub 設下的 API 呼叫次數限制

  • 經過授權者:5,000 requests per hour
  • 未經授權者:60 requests per hour (originating IP address base)

解法是:

  1. 建立 GitHub personal (OAuth) access token。建立時,選擇 read:packages 這個 scope 足以。
  2. 將產生出來的 token 交給 composer:composer config -g github-oauth.github.com <oauthtoken>
  3. 接下來再執行 composer install 等相關動作即可。

延伸閱讀

Loading comments…