withCredentials([usernamePassword(credentialsId: '1.1.1.1-SSH', passwordVariable: 'PassWord', usernameVariable: 'UserName')]){
   def remote = [name:'root',host:'1.1.1.1',port:22,allowAnyHosts:true,user:UserName,password:PassWord]
        stage("部署服务"){
            writeFile file: 'deploy.sh', text: """#!/bin/bash
cd /data/server
ver_now=`cat docker-compose.yaml | grep image | awk -F: '{print \$NF}'`
time=`date +%F-%H-%M`
mkdir -p /data/bak
cp docker-compose.yaml /data/bak/\${time}.yaml
echo docker-compose.yaml中版本号是\${ver_now} 更新的版本号是${IMAGES_TAG}
sed -i "s/\${ver_now}/${IMAGES_TAG}/g" docker-compose.yaml
docker pull registry.cn-chengdu.aliyuncs.com/vv/server:${IMAGES_TAG}
docker-compose down
sleep 1
docker-compose up -d
"""
            sshScript remote: remote, script: 'deploy.sh'}

今天被自己坑的事情:

sshScript remote: remote, script: 'deploy.sh'

用于执行本地的脚本/命令,如果是执行远程服务器上面的脚本应该使用

sshScript remote: remote, command: '~/deploy.sh'

另一个需要注意的地方:在本地执行远程脚本的时候,脚本里面的远程变量需要转义,否则jenkins会报错找不到变量,因为jenkins会将它当成本地全局变量操作。

标签: none

评论已关闭