2017-10-17 16 views
0

私はジェンキンスパイプラインがあります。複数行のドッキングウィンドウrunコマンド

node('some_vm') { 
     stage('Build'){ 

       sh '''\\ 
       docker run --name my_container --privileged -v /dev/vboxdrv:/dev/vboxdrv\\ 
       -v /usr/bin/vboxheadless:/usr/bin/vboxheadless\\ 
       -v /usr/bin/vboxmanage:/usr/bin/vboxmanage\\ 
       -v /lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxguest/:/lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxguest/\\ 
       -v /lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxsf/:/lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxsf/\\ 
       -v /lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxvideo/:/lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxvideo/\\ 
       -v /usr/lib/virtualbox/:/usr/lib/virtualbox/\\ 
       -v /etc/udev/rules.d/60-vboxdrv.rules:/etc/udev/rules.d/60-vboxdrv.rules\\ 
       -v /sbin/lsmod:/sbin/lsmod\\ 
       -v /sbin/modprobe:/sbin/modprobe\\ 
       -v /lib/x86_64-linux-gnu/libssl.so.1.0.0:/lib/x86_64-linux-gnu/libssl.so.1.0.0\\ 
       -v /lib/x86_64-linux-gnu/libcrypto.so.1.0.0:/lib/x86_64-linux-gnu/libcrypto.so.1.0.0\\ 
       -v /usr/bin/vboxsdl:/usr/bin/vboxsdl\\ 
       -v /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0:/usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0\\ 
       -v /usr/lib/x86_64-linux-gnu/libcaca.so.0:/usr/lib/x86_64-linux-gnu/libcaca.so.0\\ 
       -v /lib/x86_64-linux-gnu/libslang.so.2:/lib/x86_64-linux-gnu/libslang.so.2\\ 
       -v /home/jenkins/workspace/test/:/config/\\ 
       -v /home/jenkins/workspace/test/vms:/root/VirtualBox\\ VMs/\\ 
       -e VAGRANT_1 -e VAGRANT_2 -e VAGRANT_3 test_image\\ 
       ''' 
     } 
} 

をしかし、それはいつものエラーで失敗します。

"docker run" requires at least 1 argument(s). 
See 'docker run --help'. 

私は複数行のドッキングウィンドウrunコマンドをachiveするさまざまな方法を試していないが、今のところ何の運。

多分誰かがそれについていくつかの考えを持っていますか?

+1

各行の最後に\を付けて\を追加します。 –

+0

私はこのアプローチを試みましたが、うまくいきません。 /カーネル/ ubuntu/vbox/vboxvideo/\ ^ 1エラー – user54

+1

最後の行にスペースを入れ、最後の行には最後の行だけを使用します-v/home/jenkins/workspace/test/vms:/ root/VirtualBox \\ VMs/\\ –

答えて

0

echo "hello-world" && echo "foo-bar" 

あなたのコマンドを書き換えます。それは容器内のbashのように制限があるため、bashを適切に処理することはできません。また、コマンドライン項目を使用する代わりに、Docker APIを参照することにしました。https://jenkins.io/doc/book/pipeline/docker

1

これは単純なGroovyスクリプトです:

node { 
    stage('check java') { 
     sh "java -version " 
    } 
} 

マルチラインシェルスクリプトで:

echo "hello-world" && \ 
    echo "foo-bar" 

は、あなたの履歴からコマンドを取得するには、矢印「アップ」を押して、それが表示されます。問題は、CMDディレクティブのためにDockerfileでJSON形式を使用することによって解決した

node('some_vm') { 
     stage('Build'){ 

       sh "docker run --name my_container --privileged -v /dev/vboxdrv:/dev/vboxdrv \ 
       -v /usr/bin/vboxheadless:/usr/bin/vboxheadless \ 
       -v /usr/bin/vboxmanage:/usr/bin/vboxmanage \ 
       -v /lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxguest/:/lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxguest/ \ 
       -v /lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxsf/:/lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxsf/ \ 
       -v /lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxvideo/:/lib/modules/4.4.0-62-generic/kernel/ubuntu/vbox/vboxvideo/ \ 
       -v /usr/lib/virtualbox/:/usr/lib/virtualbox/ \ 
       -v /etc/udev/rules.d/60-vboxdrv.rules:/etc/udev/rules.d/60-vboxdrv.rules \ 
       -v /sbin/lsmod:/sbin/lsmod \ 
       -v /sbin/modprobe:/sbin/modprobe \ 
       -v /lib/x86_64-linux-gnu/libssl.so.1.0.0:/lib/x86_64-linux-gnu/libssl.so.1.0.0 \ 
       -v /lib/x86_64-linux-gnu/libcrypto.so.1.0.0:/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 \ 
       -v /usr/bin/vboxsdl:/usr/bin/vboxsdl \ 
       -v /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0:/usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0 \ 
       -v /usr/lib/x86_64-linux-gnu/libcaca.so.0:/usr/lib/x86_64-linux-gnu/libcaca.so.0 \ 
       -v /lib/x86_64-linux-gnu/libslang.so.2:/lib/x86_64-linux-gnu/libslang.so.2 \ 
       -v /home/jenkins/workspace/test/:/config/ \ 
       -v /home/jenkins/workspace/test/vms:/root/VirtualBox \ 
       -e VAGRANT_1 -e VAGRANT_2 -e VAGRANT_3 test_image" 
     } 
} 
+0

WorkflowScript:4:予期しない文字: '\' @ 4行目、102列。 -v/dev/vboxdrv:/ dev/vboxdrv \ – user54

関連する問題