私はJenkinsとDockerの新機能で、新しいマルチブランチパイプラインプロジェクトを構築してbuildserverの設定から控えています。私のアプリケーションにはいくつかの段階のJenkinsfileが含まれていて、2つのドッカー画像を使用しています。ドッカーハブの公式のmongo画像は、他のドッカー画像は自分で作成し、mavenとmercurialが含まれています。 Dockerfile:JenkinsfileとDockerのベストプラクティスを使用したマルチブランチパイプラインプロジェクト
FROM maven:3.3.9-jdk-8
RUN apt-get update && apt-get install -y -q mercurial
私は、ステージ1で私のプロジェクトをチェックアウトとMavenと第二段階でそれを構築するために、これを使用しています。次のように
マイJenkinsfileが見えます:
node {
//...
//CREATE A MONGO DOCKER IMAGE
def dockerMongoImage = docker.image("mongo");
// getting our maven container
def maven = docker.build('my:docker', '../workspace')
dockerMongoImage.withRun{ mongo ->
maven.inside("--link=${mongo.id}:mongo") {
stage "checkout branch '${env.BRANCH_NAME}'"
def cloneUrl = createScmCloneUrl("https", scmUser, scmPassword, scmHref)
sh "hg clone ${cloneUrl} -r ${env.BRANCH_NAME} ${workingDir} --insecure"
stage "build - running clean install"
runMvn(workingDir, mvnSettingsLocation, "clean install -U -V -DskipTests=true -X")
// AND SO ON
全体の構成が正常に動作しているが、私は、コンテナ内部のチェックアウトととても満足していません。 私の質問は、コンテナ内のチェックアウトを行うよりも優れた解決策があるということです。これは私が遭遇したDNSのいくつかの問題を防ぐでしょう。 これにいくつかの経験があり、ベストプラクティスが何であるか教えてくれる人がいますか?私は何度もGoogleを検索しましたが、そのための素晴らしい解決策はありませんでした。 ありがとうございました。