私は gitlab-ci を使用して C++ プロジェクトを自動的にビルドし、Python で記述された単体テストを実行しています (デーモンを実行し、ネットワーク/ソケット ベースのインターフェイスを介して通信します)。
私が見つけている問題は、GitLab-CI ランナーによってテストが実行されると、さまざまな理由で失敗することです (1 つのテストでは、特定のネットワーク操作で無期限に停止し、別のテストでは、そのパケットを受信しません)。送るべきだった)。
しかし: SSH を開いてテストを手動で実行すると、すべて正常に動作します (テストはすべての開発者のマシン [linux/windows/OSX] でも成功します)。
この時点で、gitlab-ci が使用しているビルド/テスト条件を十分に複製しようとしましたが、正確な詳細はわかりません。私の実験では問題が再現されていません。
次のいずれかについてお役に立てれば幸いです。
- テストを gitlab-ci の外で手動で実行するためのガイダンス、ただしその環境を複製して、同じエラー/失敗を取得し、デーモンやテストをデバッグできるようにする、または
- GitLab-CI-Runner で実行したときにテストが失敗する理由についての洞察
サイドトラック 1: 何らかの理由で、通常はシェルに送信されるすべての (主にデバッグ) 出力が gitlab-ci 出力に表示されるわけではありません。
サイドトラック 2: 私もジェンキンスを使ってセットアップしてみましたが、テストの 1 つはデーモンに接続することさえできませんでしたが、残りは問題なく動作しました。