Jenkinsを使用して、DockerコンテナでC ++プロジェクトを構築しようとしています。Jenkinsでのビルド、またはJenkinsの外のコンテナでのビルドに問題はありません。
以下は私が試したものです。わかりやすくするために、ボリュームマッピングを省略しています。
事例1
次のコマンドは、シェルでビルドを正常に実行します。
docker run --rm --interactive=true --tty=true $IMAGE make
ただし、Jenkinsで「シェルの実行」ステップとして実行すると、Dockerは次のエラーを返します。
cannot enable tty mode on non tty input
事例2
次のコマンドは前のものと似ていますが、対話機能を無効にします。
docker run --rm $IMAGE make
Jenkinsはビルドを正常に実行できます。ただし、ビルドを中止すると深刻な問題が発生します。ビルドは直ちに中止としてマークされますが、コンテナはビルドが完了するまで実行を続けます。また、コンテナは終了後に削除されません。
シェルで実行すると、コマンドは正常にビルドされますが、コマンドを中断することはできません。また、コンテナは終了後に削除されます。
質問
JenkinsのDockerコンテナでビルドをきれいに実行し、ビルドを中止する機能を保持する方法を誰もが知っていますか?
Docker呼び出しはスクリプト内にあり、簡単に抽出できないため、Jenkinsプラグインを使用することはオプションではありません。