CI/CDに関して知識としては5年以上昔から持ってましたが、実際にプロジェクトの中に取り組むことができるようになったのはつい最近なので、取り込みが現実的なものに関してどのように取り組んでいくかといったことも。
サンプルソースは
https://github.com/umanari145/effector
コード規約チェック
phpcs(2022年4月時点でPSR12)を使用。現実的にはエディタなどでチェックが入り、すぐ気づけるようにしておき、コード時を書くときに潰せることが大前提(コミット時やプルリク時のみで見ることは現実的ではない)
トータルのチェックをCIツールやcommit時のhookでチェックするのが良いかと・・・(エラーだと失敗するようにする)
無視ルールも随時設定が必要。
静的解析
phpmdなどあるようですが、外部サービス(sonarqubeやscrutinizer)を使う方が一般的な模様。NGの場合コードをすぐに落とすよりは品質が数値化され、目に見えるのが良いと思います。
自動テスト
おそらく一番自動化が難しい。
ポイントして大量のマスタデータ(できれば1000以内)がないこと。これがあるとテストのたびにマイグレーション&seedingがはしり、時間がかかりすぎてしまうため。
あとはmocやlocalstackなどを使い外部サービスとの連携をいかにテスト化できるか、またテストコードを書くことで当然開発工数が圧迫されるので、それを許容できる文化(お金)があるか。
ある程度折り合いをつけることも必要。
自動デプロイ
ある程度の規模になるとほとんどのシステムでは複数のサーバーやインスタンスを使っているため、必然的に取り入れることが多くなる。
手動デプロイ自体ができない&コストがかかるといったケースの方が多いと思われるので逆にいうと導入しやすい。
ドキュメント作成
あまり見たことがないですが、phpDocumenterなど使い、コミット時にファイルをエクスポートできるようにするといいのでは。