だいぶそこそこでかいプロジェクト https://github.com/googleforgames/agones
How to Contribute
https://github.com/googleforgames/agones/blob/main/CONTRIBUTING.md We’d love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.
パッチとコントリビューションを歓迎している。 従うべきガイドラインは以下の少しだけらしい
- ライセンス契約 (Contributor License Agreement)
- コントリビューションに対して著作権を持つが、この契約で Agones 側がコントリビュートされたぶぶんを使えるようにするというもの?
- 同意は https://cla.developers.google.com/ でやるらしい…?
- 普通は、1回 submit するだけで良い
- Code of Condact (行動規範)
- https://github.com/googleforgames/agones/blob/main/code-of-conduct.md
- 普通にちゃんとやってればOKな内容
Pull requests によるコード提出
- GitHub Pull Request モデルに従う
- 大量の作業の場合は、問題を作成し、「種類/設計」というラベルを付けて、構築したい機能の概要とその実装方法を説明することをお勧め
- 新しい機能については、ドキュメントを含める必要があります。
- 新しい API 設計は Google AIP 設計ガイドラインに従うことを強くお勧め
- すべての提出は、マージ前にレビューが必要です。
レビュー完了
- レビューが完了したら、PR を単一のコミットにリベースしてください。これにより、きれいな Git 履歴が保証
UE Plugin はえぐいな。。CIがないから手動でチェックしてスクショ貼らないといけないらしい。やっぱりUEは CI ないのが致命的に厳しい
フォーマット
- Goコードは gofmt でフォーマット
- インポートステートメントを修正する goimports も使う
- C++ の場合は Google C++ style guide に従う
- clang-format -style=Google foo.cc など) を使用して自動的に適用
- UEは例外
- 末尾の空白を削除します。多くのエディタはこれを自動的に行います。
新機能の場合は色々検討多い
- Agones の各バージョンは Kubernetes の 3 つのリリースをサポートしています。
- サポートされている 3 つのバージョンのうち少なくとも 1 つは、主要なクラウド プロバイダ(EKS および AKS)のそれぞれによってサポートされています。
https://github.com/googleforgames/agones
適当にひとつ見てみる https://github.com/googleforgames/agones/blob/main/pkg/gameservers/health.go
// HealthController watches Pods, and applies
// an Unhealthy state if certain pods crash, or can't be assigned a port, and other
// similar type conditions.
type HealthController struct {
baseLogger *logrus.Entry
podSynced cache.InformerSynced
podLister corelisterv1.PodLister
gameServerSynced cache.InformerSynced
gameServerGetter getterv1.GameServersGetter
gameServerLister listerv1.GameServerLister
workerqueue *workerqueue.WorkerQueue
recorder record.EventRecorder
waitOnFreePorts bool
}
構造体のこいつは、Pod と apply を監視する。 ダメな奴に unhealthy のステートを付与する