场景
在项目服务器上已经存在发布更新脚本(包含从git拉取代码,更新代码,发布),只需执行就可以,但是必须在服务器的指定目录下执行, 所以需要在Jenkins pipeline,能实现远程登录到项目服务器,并且去执行对应的脚本来更新文章来源地址https://www.uudwc.com/A/Pm0ex/
withCredentials实现方式
pipeline {
agent any
stages {
stage('update enviroment') {
steps{
echo "update ****"
dir('exist_dir') { // 到指定目录执行一下内容
sh 'pwd'
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '5806fc55-141d-4f26-9204-955b18c66ac0', url: 'https://****.git']]])
.....
}
script{
def remote = [:] //定义远程连接的remote
remote.name = "name***"
remote.host = '*.*.*.*'
remote.port = 22
remote.allowAnyHosts = true
withCredentials([sshUserPrivateKey(credentialsId: 'c71e7770-a7e0-4ef4-aa91-052a12250350', keyFileVariable: 'identity', usernameVariable: 'username')]) { // 通过Pipeline Syntax 自动生成
remote.user = username
remote.identityFile = identity
echo "update ** "
sh "scp -r -P ${remote.port} ${env.WORKSPACE}/exist_dir/* ${remote.user}@${remote.host}:/*/*/*" //在Jenkins服务器上执行scp命令,把前面exist_dir中需要的文件拷贝到指定目录
sshCommand remote: remote, command: '/bin/bash **.sh' //链接远程服务器,执行脚本
sshCommand remote: remote, command: 'export PATH=$PATH:/**/** && /bin/bash **/deploy.sh' //通过export添加执行脚本需要的环境变量
}
}
}
}
.....
}
}
文章来源:https://www.uudwc.com/A/Pm0ex/