-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ビルドキャッシュを使用するとすごく早いです。 #637
Comments
CI はクリーン環境でビルドしたいと思います。 理由は、ビルド用のバッチファイル等ビルド周りでバグがあったときに |
ですからオプションにしてデフォルトでオフなんです。 しかしクローンした個人のリポジトリでトピックブランチを開発中には早さが欲しくなります。Issue 本文にはこう書きました。
|
政治の世界ではこういうのは低いハードルで導入してからなし崩しに対象を拡大していく意図があるんだろうと読まなければいけないらしいですが、論理の世界では書かれていないことを前提に持ち込むことは禁止です。もちろん私は論理の世界の住人です。 |
そのことも反対の理由の一つです。 ビルドする条件によって、実際のビルドの前提条件が異なるので、 KISSの原則 が念頭にあります。 |
|
もう少し詳しくお願いします。
ソースコードの変更量について「ちょっと変わる」場合と「大きく変わる」場合を話しています。
sakura-editorのリポジトリでキャッシュが使える根拠がない、と言ってますか?
だから、なんで sakura-editor/sakura へのPRでローカルビルドの話がでてくるのか説明してください。 個人的なリポジトリ上にブランチ切って派生させたら済む話ではないの? |
何がまずいのかがやはりわかりません。ソースコードの変更量が多かったりヘッダを変更した場合には再コンパイル対象が増えてキャッシュの効果は減るでしょうが、そのことがまずい理由がありません。
違います。berryzplus さんが書きましたが、アーティファクトのサイズとキャッシュ容量には関係がないと言っています。使える領域を「想定」してはいません。AppVeyor の公式ドキュメントを参照して示しています。
説明します。クローンしたリポジトリには公式リポジトリの appveyor.yml が付いてきます。自分個人が動かしている AppVeyor もこの appveyor.yml に従ってエディタをビルドします。これが遅いです。ブランチを切るたびに目的とは異なる appveyor.yml への修正コミットを積めばたしかに個人でキャッシュを利用することができますが、できれば省きたい作業です。 この Issue の目的は開発環境を整えることです。以前に githash.h が常に新しくなるためにほとんどのソースコードが再コンパイルされることが問題になり修正されました。これを AppVeyor でのビルドにも適用しようというものです。AppVeyor は開発ツールです。特にローカルで Visual Studio のビルドとリビルドを使い分けられない自分には欠かせないツールです。 |
主題について、了解しました。 sakura-editor/sakuraリポジトリへのPR前の確認をできるだけ省力化するための試み、ということで。 意味合い的に、ビルドキャッシュを使うようにする、という内容ではなく、 たぶん、今の状況は前提のアリ/ナシでNG判断で中身見てない状況だと思いますので、 そういう話なら入れてもいいんじゃないかと思いますが、みなさんどうでしょう? |
やっとたどり着いてもらえましたか(感謝)。Issue 本文に書いた以下の内容を繰り返すのはこれが2回目です。これ以上のことは書いていません。
|
よく見ると PR のタイトルが良くなかったですね。修正しました。 PR の本文にはこう書いていたので予想できない反発でした。
|
@berryzplus さんが書きました。
他に最低1人の賛同者が欲しいと思っています> @sakura-editor/sakura-developers |
一旦反対意見は白紙にしておきます。感情的になった面は否めません。 |
CIの話なので初めからじっくり読みました。 ・本家MasterにPRされるものはキャッシュは使わない(今まで通り) ですかね? リスクとしてキャッシュを使うようにした場合と本家PRの差がそこで顕著化する可能性があるので分家のAppVeyor が正常で本家側で問題が起こった時に切り分けが必要になってくるってかんじですかね? 作業の流れとしては、いったんローカルでソース修正、終わったら分家側プッシュ、生成物に問題なければ本家へPR、問題がでたら、再度ローカルでソース修正、終わったら分家側プッシュ(ここでキャッシュが利く?)、問題解決できれば本家へPR。 最後の本家へPRした後の生成物に問題が出る可能性がゼロではないんじゃないかというのが、 @m-tmatma さんの気になるポイントですよね。 この場合、分家側で、キャッシュ無でリコンパイルして、確認要って感じですよね? 最後本家側は今まで通りキャッシュ無コンパイルするから問題ないし、分家側の生成物と必ずしも本家側が一緒にならないリスクは、分家側だけが負うリスクなのかなと(アセンブラレベルでマッチングできるんでしたよね?、それは分家側がやればこのリスクはなくなりますよね)。 レビューする側は、本家側の生成物で問題があれば、それを単にチェックすればよくて(今まで通り)、分家側生成物では問題ない場合は、PRした人の責任で調べる(いわるゆ「おま環」ってやつですかね?)運用って感じであってますかね? この認識であってれば、ビルドキャッシュで作業がはかどるなら全然問題ないと思います。 |
本日戻って参りました! (他の Issue/PR には数日前から顔を出していましたが……)
意思表明ありがとうございます。自分は一人で納得して ACK を出すのを忘れがちなので見習おうと思います。
すべてその通りでございます。 一度や二度で話が通じないことが多かったので自分の文章はさぞ読みにくかったろうと思います。自分で自分の日記を読み返してさえ「こいつは何を言ってるんだ」と話の飛び具合についていけなくなりますから。 おそらく想像が及んでいないだろう部分を補足すると、キャッシュは何十回何百回というレベルで効いてきます。自分が動かしている AppVeyor のビルドナンバーは730を数えています。 そしてこの後ですが、この Issue を実現する手段としてすでに PR #650 を出しています。内容については @berryzplus さんが OK を出していますから、@KENCHjp さんに GO サインだけ出してもらえると後の不具合はこちらで責任を持ちます。@m-tmatma さんに白紙撤回以上のことを要求することは自分にはできかねます。 |
GO! |
興味ある人も居ないようなので閉じておきます。 必要あれば新たにissue立ててください。 |
AppVeyor にはビルドキャッシュという機能があり、Job 毎にビルドをまたいで中間生成物を再利用できます。フリー版では 1 GB の容量がありますが、サクラエディタでは1JOBあたり 70MB の中間生成物が生まれます。PR ブランチに限りデフォルトで無効になっているようです。
適切に依存関係を設定して、不必要にファイルを新しくしなければ 、githash.h をインクルードしている CDlgAbout.cpp と、コミットで手を入れた .cpp ファイルを再コンパイルするだけでエディタとテストが完成します。
master...ds14050:cmakebuild ブランチの「AppVeyor integration (Use build cache).」というコミットで実験しましたが、現在の master で 37 分かかっているものが 20 分で済みました。
プロジェクト設定に不手際がなければ、エディタとテストのビルド産物の場所と、Funccode_enum.h、Funccode_define.h の場所をキャッシュに指定するだけです。Funccode_enum.h のキャッシュを忘れると StdAfx.h が新しくなるので全てが再コンパイルされてしまいます。
ひとつだけ仕込みが必要なのが、Git がファイルのタイムスタンプを保持してくれないために更新日時がチェックアウト日時になってしまい、ソースファイルが必ずキャッシュした中間生成物よりも新しくなってしまうことです。対処するスクリプトが先のコミットに含まれています。
おそらく sakura-editor/sakura/master のビルドよりも、開発中のブランチで役に立つ内容だと思います。AppVeyor アカウントでキャッシュを設定するだけでビルドが早くなるように準備が整った状態に持って行きたいと考えています。
The text was updated successfully, but these errors were encountered: