2017-10-10 214 views
0

我寫了一個Jenkinsfile,並在一個步驟中卡住了,那基本上是部署階段。在部署階段,有一個步驟是必須將ssh放入一個服務器並運行幾條命令。早些時候它工作正常,但是當我用一些正則表達式添加sed命令時,Jenkins顯示語法錯誤。以下是摘錄。與sed命令Jenkinfile ssh問題

   steps { 
         sshagent (credentials: []) { 

sh ''' 
echo "Tag=miqp-server_${BUILD_NUMBER}" > sshenv 
echo "target=${DeployTo}" >> sshenv 
scp sshenv [email protected]:~/.ssh/environment 
ssh -T -o StrictHostKeyChecking=no -l root SERVERIP <<'EOF' 

#DEPLOYMENT_NAME="miqp-server-dep" 
#CONTAINER_NAME="miqp-server-dev" 
#NEW_DOCKER_IMAGE="2xxxxxxxxxx6.dkr.ecr.us-east-1.amazonaws.com/miqp-devops:${Tag}" 
RELEASE_NAME=miqp-server-dep 

if [ "${target}" = "None" ] 
then 
    echo "No deployment to K8s" 
else 

cd /root/kubernetes-ingress/dev/miqp-server-dep/ 
sed -i "s/^\([[:space:]]*tag:[[:space:]]*\).*/\1$Tag/" values.yaml 
helm upgrade -f values.yaml $RELEASE_NAME miqp-server-dep.0.1.0.tgz 

#kubectl set image deployment/$DEPLOYMENT_NAME $CONTAINER_NAME=$NEW_DOCKER_IMAGE -n devops-dev 
#kubectl rollout status deployment $DEPLOYMENT_NAME -n devops-dev 

fi 
EOF''' 

和錯誤詹金斯投擲是

WorkflowScript: 156: unexpected char: '\' @ line 156, column 13. 
    sed -i "s/^\([[:space:]]*tag:[[:space:]]*\).*/\1$Tag/" values.yaml 
      ^

1 error 

回答

0

嘿,我通過給轉義字符

sed -i "s/^\([[:space:]]*tag:[[:space:]]*\).*/\1$Tag/" values.yaml 

sed -i "s/^\\([[:space:]]*tag:[[:space:]]*\\).*/\\1$Tag/" values.yaml 

感謝

解決問題