はじめに
LIGTHzアドベントカレンダー 2022の24日目の記事です。
本日はクリスマス・イブ🎅ですね。
この記事では、これまで私がCI/CDパイプラインを構築する上で、考慮・工夫したところをお話ししたいと思います。
これからパイプラインを導入したい、導入は終わって改善していきたい、という人に参考になればと思います。
考慮・工夫点
CI/CDツールをどれにするか決める
まだパイプライン導入していないという方はツールの選定から始める必要があると思います。
Azure Pipelines, GitHub Actions, CircleCI, AWS CodePipeline 等いろいろなツールがあります。
選択時には
- そのほかの開発ツール(ソースコード管理、チケット管理..etc)との連携のしやすさ
- プロダクトの動作環境(オンプレ、Azure ...etc)との連携のしやすさ
- 現在いるエンジニアのスキルセット
- スキルセットを保有するエンジニアの採用のしやすさ
あたりを検討するとよいと思います。
小さく始めてみる
導入初期段階で、CI/CDパイプラインをすべて整えられるとよいのですが、初めて導入しようとなった場合負荷が大きいように思います。
そのため個人的には、
- lintを実行する
- unit testを実行する
- 開発環境へデプロイする
といったように、段階的に始めてみるのがおすすめです。
ソースコードのレポジトリ管理方法・ブランチ戦略を決める
下記、2つの観点はパイプライン構築に影響するので方針を決めておくと手戻りを少なくできると思います。
-
レポジトリ管理: マルチレポ or モノレポ
モノレポであれば実行トリガを工夫して、frontendの変更のみの場合はbackendのCIは実行しない等、制御すると実行時間を短縮できます。Azure Pipelinesでの設定は公式を参照 -
ブランチ戦略: Git Flow, GitHub Flow ...etc
過去記事でブランチ戦略について触れているので良かったら参考にしてください!
並列実行できるように課金を検討する
開発者が多い場合や複数のプロジェクトでCIツールを使っている場合、Pipelineの処理が実行待ちになり、開発スピードにも影響すると思います。
パイプラインの高速化に取り組めると良いですが、機能開発等を優先する際は課金をして並列実行数を増やすというのも検討すると良いです。
Azure Pipelinesの場合は、$40/月で並列実行数を1増やすことができます。
cacheを用いて実行時間を短縮する
パイプラインの実行結果を早く受け取ることで、開発速度向上も見込めると思うので、パッケージ等のcacheを検討すると良いです。
azure pipelinesでのcache方法は公式を参照
繰り返し実行される処理は再利用可能にしておく
例えば、デプロイ処理で複数環境(開発、ステージング、QA、本番...etc)が存在した場合、パラメータのみ異なり、ロジックは一緒ということがあると思います。このような場合はデプロイ処理のみ切り出しておけば、環境が増えた際にも少ない工数で対応が可能です。
Azure pipelinesだとtemplateを用いることで実現できます。詳しくは公式を参照
過去記事でも触れているのでよかったら見てください!
パイプラインの実行失敗時などに通知がくるようにしておく
Pipelineの状態を常にウォッチしておくのも労力がいると思うので、実行失敗した場合等にTeamsやSlackといった普段使っているツールに通知を飛ばすことで、早めの対応が可能になると思います。
Azure pipelinesとTeamsの連携は公式を参照
さいごに
最後まで読んで頂きありがとうございました。
LIGHTzでは、一緒に働く仲間を募集しております。
https://www.wantedly.com/projects/1181162