分享一段新手也能看懂的jenkins部署脚本,便于其他同学快速入门.

1673234901

步骤

 下面实现了代码从仓库到目标服务器的部署过程,分别是

  1. 拉取仓库代码
  2. 配置服务配置
  3. 打包代码
  4. 检查目标服务器环境
  5. 部署代码到目标服务器
  6. 发布代码到目标服务器指定位置
  7. 清理当前工作空间

源码

pipeline {
    agent any

    parameters{

        string(name:'site_hash',defaultValue:'deploy_001',description:'站点名称')

        string(name:'git_url',defaultValue:'https://xxx.com/xxxx.git',description:'仓库地址')
        string(name:'version',defaultValue:'v1.0.0',description:'版本')
        string(name:'build_name',defaultValue:'deploy_001',description:'打包名称')

        string(name:'server_name',defaultValue:'dev',description:'服务器名称')
        string(name:'server_host',defaultValue:'xx.xx.xx.xx',description:'服务器ip')
        string(name:'server_user',defaultValue:'root',description:'服务器账号')
        string(name:'server_password',defaultValue:'xxxxxxxxxx',description:'服务器密码')

        string(name:'back_path',defaultValue:'/www/jenkins/deploy',description:'备份目录')
        string(name:'release_path',defaultValue:'/www/jenkins/deploy',description:'发布目录')
    }
    stages {

        stage('拉取'){
            steps{
                deleteDir()
                checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '$version']],  extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], userRemoteConfigs: [[url: '$git_url']]]
            }
        }
        stage('配置服务') {
            steps {
                sh 'curl https://xxx.s.xxxx.cn/xxxx?sign=xxxxxx -o env'
            }
        }
        stage('打包') {
            steps {
                 sh 'tar -zcvf "$build_name".tar.gz *'
            }
        }
        stage("检查环境"){
            steps{
                echo 'check...'
                script{
                    def remote = [:]
                    remote.name = "${params.server_name}"
                    remote.host = "${params.server_host}"
                    remote.user = "${params.server_user}"
                    remote.password = "${params.server_password}"
                    remote.allowAnyHosts = true

                    sshCommand remote:remote,command:"mkdir -p ${params.back_path}/${params.build_name}"
                }
            }
        }
        stage('部署') {
            steps {
                echo 'Deploying....'
                script{
                    def remote = [:]
                    remote.name = "${params.server_name}"
                    remote.host = "${params.server_host}"
                    remote.user = "${params.server_user}"
                    remote.password = "${params.server_password}"
                    remote.allowAnyHosts = true

                    sshPut remote: remote, from: "${env.WORKSPACE}/${params.build_name}", into: "${params.back_path}/${params.build_name}"
                    sshCommand remote:remote,command:"cd ${params.back_path}/${params.build_name} && tar -xvf ${params.build_name} && rm -f ${params.build_name}"

                }

            }
        }
        stage('发布') {
            steps {
                echo '发布....'
                script{
                    def remote = [:]
                    remote.name = "${params.server_name}"
                    remote.host = "${params.server_host}"
                    remote.user = "${params.server_user}"
                    remote.password = "${params.server_password}"
                    remote.allowAnyHosts = true
                    sshCommand remote:remote,command:"ln -snf ${params.back_path}/${params.build_name} ${params.release_path}"
                }
            }
        }
        stage('清理工作空间'){
            steps{
                deleteDir()
            }
        }
    }
}