私の会社はtravis-ci.org(オープンソースソフトウェアの無料バージョン)を使用して、github上のリポジトリへのプルリクエストを自動的に構築しています。約20人が1日を通して同じリポにプルリクエストを送信し、これらはそれぞれ、ビルドごとに2つのビルドジョブを含むマトリックスでビルドされます。ビルドがTravisに送信されてから開始するまでに、数分(場合によっては数時間)かかることがよくあります。 (症状:ビルドがtravisに表示されますが、タイマーが開始せず、しばらくの間コンソール出力がありません。)
これは、travis-ci.orgがバックアップされているか、スロットルがビルドされているために発生すると思います。まず第一に
もしそうなら、ビルドはどのように調整されますか?
ビルドが抑制されている
これを知ることで、travis-ci.orgが設定した制約内でビルドが完了するまでの時間を最適化できるようになります(うまくいけば、無料のユーザーとしてNiceをプレイすることと一致します)。
Travis-ciステータスページ( http://www.traviscistatus.com/ )をチェックアウトすると、「オープンソースプロジェクト用のアクティブなLinuxビルド」が定期的に最大になることがわかります。 Travisプライベートビルドシステムのしくみ(すべての「ビルドジョブ」に対して単一のキューが一度に実行されるx以下)に基づいて、すべてのオープンソースのビルドジョブに対して単一のキューがあると思います。
ビルドを複数のジョブに分割することができ、それぞれがより速く終了します。 Travisの使用率が低い場合、それらは並行して実行され、ビルドはより早く戻りますが、Travisが他の多くのビルドを実行している場合、ビルドはシーケンシャルにしか実行できません。
投稿したリポジトリの.travis.yml
を見ると、aptキャッシングとpipキャッシングを追加することで、パフォーマンスが向上していることがわかります( http://docs.travis-ci.com/user/caching/ )。 Travisの新しいコンテナーベースのインフラストラクチャへの切り替えも検討する必要があります( http://docs.travis-ci.com/user/workers/container-based-infrastructure/ )。ただし、ビルドでSudo apt-get
コマンドを置き換えることができる場合にのみ機能します。
Travis-CIは現在、オープンソースプロジェクトに 5つの同時ビルド を提供しており、これはGitHubログインまたは組織ごとのすべてのリポジトリに対してカウントされます Apache Software Foundationが発見したとおり 。 Travisは、並行ビルドのこの制限に向けて、すべてのプロジェクトおよびプルリクエストにわたって、各「ビルドジョブ」をカウントします。
Travis CIでは、ログインやリポジトリに関係なく、すべてのビルドがキューに入れられます。
また、Travis CIステータス履歴(ここでは http://www.traviscistatus.com/history )を確認すると、4月7日に説明した問題に気付いて調査したことがわかります。そして4月8日。また、4月9日にビルド環境の更新も行いました( http://docs.travis-ci.com/user/build-environment-updates/2015-04-09/ )。更新中、処理するキューは増加しており、後で処理する必要があります。この組み合わせが、おそらくあなたが経験した長い遅延の原因です。
これがお役に立てば幸いです。
私はTravisを個人的に使用しており、1日あたりのビルドはほとんどありません。ビルドが開始するまでに数分の遅延があることがよくありますが、これはおそらく正常です。少し調べた後、トラビスの制限について非常に良い数を見つけることはできませんでしたが、確かにいくつかあります( source )。これはGitHubの問題であり、プロジェクトごとのビルドを制限して、ユーザーや会社の制限にすぐに達しないようにするかどうかを尋ねています。つまり、いくつかの制限が適用されます。無料版は「フェアユース」と記載されているので、それが何を意味するのか正確にはわかりません。ビルドの実行速度が遅い場合は ビルドの高速化 を調べて、制限に達する前にそれらを最大限に活用します。
申し訳ありませんが、実際の数値を提供することはできませんが、ビルドをそのまま最適化するために最善を尽くす必要があります。彼らはおそらくまだ成長しており、システムが処理できるものを変更しているため、ハードリミットがない可能性があります。
私が見つけたいくつかの数字:
私は制限数を探して、私がそれらに罰金を課した場合/時、私の答えを更新するつもりです