tig*_*tig 4 linux bash jenkins
我的Jenkinsfile中有以下sh命令,它不起作用,因为它尝试执行最后一个"DATA"作为命令.如果我将最后一个"DATA"移动到该行的开头,它可以工作,但不如我想要的那么漂亮.在这种情况下,有没有办法解决这个问题?
sh """
sshpass -p 'password' ssh -o StrictHostKeyChecking=no appsadm@$backup_registry <<DATA
sudo /etc/init.d/docker stop || true
sudo yum remove -y docker-engine.x86_64
sudo rm -fr /var/lib/docker /var/log/docker
sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm || true
sudo yum update -y
sudo yum -y install docker-io
sudo sed -i 's#other_args=.*#other_args="--insecure-registry $official_registry:5000"#g' /etc/sysconfig/docker
sudo /etc/init.d/docker start
DATA
"""
Run Code Online (Sandbox Code Playgroud)
小智 10
我知道这是一个古老的问题,但我在某个时候碰到了这个问题,并最终使用了stripIndent()
steps {
echo 'Deploying....'
sh """
ssh somewhere <<EOF
cd somewhere
do some more stuff
EOF
""".stripIndent()
}
Run Code Online (Sandbox Code Playgroud)
这样你仍然可以保留缩进和格式
因为<<DATA指定了here-doc的结尾,<<-DATA抑制前导制表符,但不抑制空格
cat <<-DATA
hello
<tab>DATA
Run Code Online (Sandbox Code Playgroud)
另一种选择是在标记中添加空格
cat << " DATA"
hello
DATA
Run Code Online (Sandbox Code Playgroud)