jenkins pipeline 通过withCredentials连接项目服务器进行自动部署

场景

在项目服务器上已经存在发布更新脚本(包含从git拉取代码,更新代码,发布),只需执行就可以,但是必须在服务器的指定目录下执行, 所以需要在Jenkins pipeline,能实现远程登录到项目服务器,并且去执行对应的脚本来更新

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添加执行脚本需要的环境变量
                }
              }
            }
       }
       .....
    }
}

你可能感兴趣的:(经验分享,jenkins,jenkins,自动化)