Jenkins Docker Pipeline の作業ディレクトリの上書き 質問する

Jenkins Docker Pipeline の作業ディレクトリの上書き 質問する

Docker Pipeline プラグインで Jenkins を使用するときに気付きました。Docker コンテナでコマンドを実行するために Jenkins ファイルを作成すると、実行中のコンテナ内の同じパスにマップされた Jenkins ワークスペース ディレクトリのボリューム マッピングが常に作成されます。また、同じパスの作業ディレクトリも作成されます。

docker run -t -d -u 127:134 -w /var/lib/jenkins/workspace/DockerTest 
-v /var/lib/jenkins/workspace/DockerTest:/var/lib/jenkins/workspace/DockerTest:rw,z 
-v /var/lib/jenkins/workspace/DockerTest@tmp:/var/lib/jenkins/workspace/DockerTest@tmp:rw,z 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
jekyll/jekyll:builder cat

私は、次のように Docker の Jenkinsfile に引数を指定してこれを上書きしようとしました。

pipeline {
  agent {
    docker {
      image 'jekyll/jekyll:builder'
      args '-v $HOME:/srv/jekyll -w /srv/jekyll'
    }
  }
  stages {
    stage('Test') {
      steps {
      sh 'cd /srv/jekyll && ls -l'
      }
    }
  }
}

これは Docker コマンドの先頭にオプションを追加するだけであり、workdir とボリュームのマッピングはデフォルト設定によって上書きされるようです。

docker run -t -d -u 127:134 
-v $HOME:/srv/jekyll 
-w /srv/jekyll 
-w /var/lib/jenkins/workspace/DockerTest 
-v /var/lib/jenkins/workspace/DockerTest:/var/lib/jenkins/workspace/DockerTest:rw,z 
-v /var/lib/jenkins/workspace/DockerTest@tmp:/var/lib/jenkins/workspace/DockerTest@tmp:rw,z 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
jekyll/jekyll:builder cat

ボリューム マッピングと作業ディレクトリを何らかの方法で上書きする方法はありますか?

ベストアンサー1

docker {}と組み合わせるdir {}ことで作業ディレクトリを制御できます:

pipeline {
  agent {
    docker {
      image 'jekyll/jekyll:builder'
      args '-v $HOME:/srv/jekyll'
    }
  }
  stages {
    stage('Test') {
      steps {
        dir(path: '/srv/jekyll') {
          sh 'ls -l'
        }
      }
    }
  }
}

この-w議論は効果がないからやめてcd /src/jekylldir(path: '/srv/jekyll'){...}

おすすめ記事