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

场景

在项目服务器上已经存在发布更新脚本(包含从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://blog.csdn.net/z917185537/article/details/132602446

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年09月18日 03:08
SSL双向认证-Nginx配置
下一篇 2023年09月18日 03:08