Upgrade to Pro — share decks privately, control downloads, hide ads and more …

日々のCI/CD活動における躓き

Avatar for WHIsaiyo WHIsaiyo
July 28, 2025
0

 日々のCI/CD活動における躓き

7/3に開催した「CI/CDについて語る会」の資料です。
https://workshumanintelligence.connpass.com/event/359807/

岡田 裕介
Product Div. CSR Dept. CI/CD Grp.

Avatar for WHIsaiyo

WHIsaiyo

July 28, 2025
Tweet

More Decks by WHIsaiyo

Transcript

  1. 自己紹介 名前:岡田 裕介 所属:Product Div. CSR Dept. CI/CD Grp. 普段の業務内容:社内開発チーム向け

    の CI/CD パイプラインの設計 / 構築 / 改善 趣味:野球観戦 / 散歩 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  2. 2. 複数リポジトリへの共通ファイル配布 躓き 同じファイルを複数のリポジトリに配布したいという要望がありましたが、手動での配布は手間がかかる という問題がありました。 ⏱️ 時間消費 ❌ エラー増加 📄

    共通ファイル 📦 リポジトリ1 への手動配布 📦 リポジトリ2 への手動配布 📦 リポジトリ3 への手動配布 ⚙️ 手動管理の手間 📉 効率低下 ⚠️ 不整合発生リスク WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  3. 施策 共通ファイルの配布用リポジトリを作成し、そこから対象のリポジトリに対してGitHubActionsを使用し て配布する仕組みを構築しました。 実装の理由 PR テンプレートや Issue テンプレートなど、ある程度共通で欲しいファイルが多数あり、これらを個々の リポジトリで更新するのが非常に手間だったためです。 結果

    共通リポジトリで一元管理することにより、複数リポジトリ間でのファイル更新の手間が大幅に削減さ れ、一貫性のあるレポジトリルールを維持できるようになりました。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  4. 3. 複数リポジトリでの共通 GitHub Actions 実行 躓き 同じ GitHub Actions を複数のリポジトリで実行したいという要望がありました。

    しかし、各リポジトリ に同じ Actions の実装が存在するため、変更時の管理が煩雑でした。 ⏱️ 時間と工数の増加 🔄 共通GitHub Actions 📦 リポジトリ1 に実装 📦 リポジトリ2 に実装 📦 リポジトリ3 に実装 🔄 変更発生 🛠️ 各リポジトリで個別更新 😵 管理が煩雑化 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  5. 施策 GitHub Actions を集めた共通のリポジトリを作成し、それを各々のリポジトリで呼び出す形にしました。 実装の理由 当初、同一の Actions の実装が各リポジトリに散在しており、変更を加える際にすべてのリポジトリに変 更を適用する手間がありました。 これにより保守性が低かったため、共通化することで管理を効率化しま

    した。 結果 Actions の変更が1箇所で完結するようになり、メンテナンス性と再利用性が大幅に向上しました。 ま た、各リポジトリでの独自実装による不整合も解消されました。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  6. 4. GitHub Actions のスポットインスタンス停止 躓き GitHub Actions のランナーとして使用しているスポットインスタンスが実行中にしばしば停止してしまう という問題がありました。 特に長い

    Actions の場合にこの問題が頻発していました。 Yes No ▶️ GitHub Actions の開始 💻 スポットインスタンスで実行 ⏱️ 長時間の実行 🛑 インスタンスが停止 ✅ 正常終了 ❌ プロセスが中断 🔄 再実行が必要 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  7. 施策 Actions の実行完了時に特定のメッセージが出力されている場合、再実行用の Actions を実装しました。 実装の理由 GitHub Actions の yml

    で指定できるリトライ機能では、インスタンス自体が Terminate されている場合 には機能しないため、独自の再実行メカニズムを実装する必要がありました。 結果 スポットインスタンスが突然停止した場合でも自動的に検知して再実行されるようになり、長時間のジョ ブでも安定して完了するようになりました。 これによりCI/CDパイプラインの信頼性が向上しました。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  8. 5. GitHub でのチェリーピック 躓き GitHub の GUI からチェリーピックを行いたいというニーズがありました。 ⏱️ 時間消費

    ❌ 操作ミスのリスク 👨‍💻 開発者 🖥️ GitHub GUI で作業 🍒 チェリーピック機能がない 💻 CLI での手動操作が必要 📉 効率低下 😓 手間増加 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  9. 施策 GitHub のコメント駆動を利用した Actions を実装しました。 これにより、PR に対して /cherry-pick ${cherry-pick先ブランチ名} とコメントを投稿すると、指定されたブランチにチェリーピックが実行される

    ようにしました。 実装の理由 以前使用していた弊社GitLab には画面上からチェリーピックする機能が存在していましたが、GitHub へ の移行によってこの機能がなくなったため、同等の操作性を実現するために自作しました。 結果 コメント一つでチェリーピックが実行できるようになり、開発者がコマンドラインを使わずとも簡単にブ ランチ間のコード移行ができるようになりました。 これにより、GitLabからGitHubへの移行による操作 性の低下を解消できました。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  10. 6. Windows インスタンスでの Docker 利用 躓き EC2 の Windows インスタンス上で

    Dockerを使用したかったが、WindowsのDockerは基本的に DockerDesktopを利用する形になっていて困りました。 Metal インスタンスではない Metal インスタンス 👥 ユーザー 🖥️ EC2 Windows インスタンス上で Docker Desktop を利用 🛠️ Hyper-V 必須 ❌ WSL の Docker を利用不可 ✅ WSL の Docker を利用可 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  11. 施策 Windows コンテナー(WCOW)を利用する形に変更しました。 実装の理由 ビルドに関するサーバーはWindowsである必要がありました。 環境を固定したい意図もあり、Dockerを 使用する形は維持したい背景がありました。 EC2ではHyper-V の制約があったため、Docker Desktopは

    使用できませんでした。 結果 Windows コンテナー(WCOW)を採用したことで、EC2のような非Metal環境でもコンテナ技術を活用し たビルドが可能となり、クラウド上での一貫したCI/CDパイプラインを構築できました。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  12. 7. GitHubActions に PAT を使用していたが異動や退職に伴って CI が動作しな くなる 躓き GitHubActions

    に PAT (Personal Access Token) を使用していました。 その結果、トークン作成者の異 動や退職に伴って CI が動作しなくなる問題が発生しました。 🔑❌ PAT 無効化でCI/CD 停止 👨‍💻 開発者が個人のPAT を設定 🔄 CI/CD パイプライン 🚶‍♂️ 開発者の異動/ 退職 🚨 緊急対応 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  13. 施策 個人に紐づくPAT を廃止し、GitHub Apps を使用する形に移行しました。 実装の理由 GitHub Apps は組織に所有権を付与でき、個人依存せず安定した CI

    を維持できます。 また、最小限の権 限設定が可能でセキュリティ面も強化されます。 結果 GitHub Apps への移行により、特定の個人に依存しないCI/CD環境を構築でき、人事異動や組織変更に影 響されない安定したパイプラインを実現できました。 また、トークンの期限切れによる突発的な問題も解 消され、運用コストが削減されました。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  14. 8. イントラネット/リポジトリを跨ぐリンクの検証 躓き ドキュメント内のリンクが複数のリポジトリやイントラネット上のリソースを跨いでいるため、リンク切 れが発生しても自動的に検出する仕組みがありませんでした。 📄 ドキュメント 🔐 内部リポジトリへのリンク 🌐

    外部リポジトリへのリンク 🏢 イントラネットリソースへのリン 🔄 リソース変更/ 移動 🔗❌ リンク切れ 📉 ドキュメント品質低下 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  15. 9. GitHub Actions のランナーバージョンアップによる問題 躓き ランナー上のコンテナ内で動かす Actions がランナーのNodeやOSの強制バージョンアップによって突然 動作しなくなる問題が発生しました。 ❌

    Actions 失敗 🔄 GitHub Actions ランナーの強制バ 🐳 ランナー上のコンテナのGitHub 🚨 CI/CD パイプライン障害 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  16. 施策 自前で Docker コンテナを用意して環境を固定したり、バージョンに依存しないコンテナを使わない実装 に変更しました。 実装の理由 GitHub Actions の仕様上、非推奨のランタイムバージョンを明示的に指定しても、ランナー上のコンテナ では強制的に最新バージョンが使用されてしまうという問題がありました。これにより予期せぬ更新によ

    る互換性の問題が頻発したため、自前のコンテナを用意してCI環境を完全に制御する必要がありました。 結果 カスタムDockerコンテナの採用により、ランタイム環境を完全に制御できるようになり、外部要因による 予期せぬ障害が大幅に減少しました。また、コンテナレスのアプローチも併用することで、シンプルなワ ークフローではメンテナンスコストを削減しつつ安定性を確保できるようになりました。これにより CI/CDパイプラインの信頼性が向上しました。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  17. 10. AWS の Windows Server インスタンスでの文字化け問題 躓き AWS の Windows

    Server イメージを使用したインスタンスでexeをコンパイルすると、日本語が文字化け する問題が発生しました。 ☁️ AWS Windows Server 🔨 アプリケーションのコンパイル 🈲 日本語文字化け WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.
  18. 施策 Windows インスタンスの入力ロケールを日本語に明示的に変更することで問題を解決しました。 実装の理由 AWS の Windows インスタンス作成時に「日本語」を選択していても、システムロケールのみが日本語に なっており、入力ロケールは米国英語のままになっていることが原因でした。 exeのコンパイル時には入

    力ロケールの設定を参照していたため文字化けをしていました。 結果 入力ロケールを日本語に変更したことで文字化けの問題を解消することができました。 なお、現在の AWS環境ではWindowsServerのインスタンスでは日本語が選択できないため再発はしないと思われます。 WHI LT CI/CDについて語る会 - Jul. 3rd, 2025 ©Works Human Intelligence Co., Ltd.