jockkinsスレーブを記述するドッカーファイルがあります。このスレーブでは、ビルド作業を行うためにいくつかのファイルをチェックアウトする必要があります。このフォルダを常に最新にするために、私はコンテナが起動するたびにsvnの更新を行うつもりでした。しかし、それは何らかの理由で動作しません。ここに私のDockerfileです:ドッカーコンテナでsvn updateスクリプトを実行しています
#!/bin/sh
/usr/sbin/sshd -D
cd /home/jenkins/workspace/config && svn update --username $1 --password $2
私は理解していないことである:
FROM ubuntu:16.04
...
# Arguments which can be passed via --build-arg <varname>=<value>
ARG svnPassword
ARG svnUser
...
#Install Subversion
RUN apt-get install -y subversion
# Checkout config from SVN
RUN mkdir -p /home/jenkins/workspace/config && cd /home/jenkins/workspace && svn checkout --username $svnUser --password $svnPassword http://myRepo/config
...
# Add svnUpdate.sh script
ADD svnUpdate.sh /home/svnUpdate.sh
CMD /home/svnUpdate.sh $svnUser $svnPassword
私svnUpdate.shは、このようになります私は、実行中のコンテナにログインして実行すると
./home/svnUpdate.sh user password
それは完全に動作します。コンテナの起動時にスクリプトが実行されるように変更するにはどうすればよいですか?
更新: スクリプトの "/ usr/sbin/sshd -D"がスクリプトの実行を中断することが判明しました。
私はまた、代わりにCMDのENTRYPOINTを使用するように変更:
ENTRYPOINT ["/bin/bash", "./home/svnUpdate.sh", "$svnUser", "$svnPassword"]
今、私の唯一の問題は、文字列「$ svnUserが」代わりに解決された値のスクリプトに渡されていることです。