用jenkins同步非SCM项目文件

原创
2020/11/08 22:12
阅读数 205

创建一个pipeline项目,默认各个项目的工作目录workspace是/var/lib/jenkins/workspace/,如果是配置SCM的项目,这个目录下会迁出各个项目的代码,发布时是从此目录读取文件进行同步,基本上是没有问题的,但是如果某些项目或文件,如vue的工程,并不在此目录下,也没使用SCM,不想直接在服务器打包,而是要直接同步,类似lsyncd/rsync的做法,这样直接读文件是读不到的,用什么办法自动同步文件呢?

网上有些讨论修改workspace目录的,但一般要么是全局配置,要么是比较复杂,其实只要在发布指令使用dir(){}就行了,下面是完整的jenkinsfile例子

pipeline {
    agent any
    environment {
        ZG_DEBUG = true
    }
    stages {
        stage('Choose Project'){
            steps {
                script{
                    env.choose_path = input message:'请选择要同步的目录', parameters:[string(defaultValue: '', description: '请选择要同步的目录,如/projects/project1/', name: 'project', trim:true)]
                }
            }
        }
        stage('Source') {
            steps {
                echo 'Check dir and sources...'
                echo "sync ${env.choose_path}"
            }
        }
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Publish') {
            steps {
                echo 'Publish...'
                dir("/your-target-project-root-dir/" ) {                    
                
                    sshPublisher(
                        failOnError: true,
                        publishers: [
                            sshPublisherDesc(
                                configName: 'test-server', 
                                transfers: [sshTransfer(sourceFiles:"${env.choose_path}/**",remoteDirectory:'/tmp/',removePrefix:'')], 
                                usePromotionTimestamp: false, 
                                useWorkspaceInPromotion: false, 
                                verbose: true
                            )
                        ]
                    )
                }
            }
        }
    }
}

有几点说明

  • 上面的代码实现了,同步前输入文件夹,即可以指定任意目录同步,本例未检测输入的文件是否存在(这个比较容易,读者可以自行解决)
  • your-target-project-root-dir 即要同步的文件夹根目录,要同步的项目均在此目录下
  • 本例中要同步的目标服务器配置名称是test-server,在jenkins ssh全局配置中设置,远程目录是/tmp
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部