Jenkins groovy -基于参数中的字符串复制文件

szqfcxe2  于 2023-02-07  发布在  Jenkins
关注(0)|答案(1)|浏览(171)

我有一个Jenkins的工作,需要复制一个文件到一个特定的服务器每个用户的选择。直到今天,所有的工作,因为我需要复制相同的文件到服务器的用户选择。
现在我需要复制每个服务器的特定文件。如果用户选择部署Server_lab 1-1.1.1.1,则应复制lab 1.file.conf文件。如果用户选择部署Server_lab 2-2.2.2.2,则应复制lab 2.file.conf文件。
我猜我需要向函数中添加以下内容:检查Server参数是否包含lab 1,如果包含,则复制lab1.file.conf文件;如果Server参数包含lab 2,则复制lab2.file.conf文件

parameters {
        extendedChoice(name: 'Servers', description: 'Select servers for deployment', multiSelectDelimiter: ',',
                type: 'PT_CHECKBOX', value: 'Server_lab1-1.1.1.1, Server_lab2-2.2.2.2', visibleItemCount: 5)

stage ('Copy nifi.flow.properties file') {
            steps {  copy_file()  }  }

def copy_file() {
    params.Servers.split(',').each { item -> server = item.split('-').last()
        sh "scp **lab1.file.conf or lab2.file.conf** ${ssh_user_name}@${server}:${spath}"
    }
}
jgovgodb

jgovgodb1#

你在找像下面这样的东西吗。

def copy_file() {
    params.Servers.split(',').each { item ->     
    def server = item.split('-').last()
    def fileName = item.contains('lab1') ? 'lab1.file' : 'lab2.file'
    sh "scp ${fileName} ${ssh_user_name}@${server}:${spath}"
    }
}

更新经典if-else

def copy_file() {
    params.Servers.split(',').each { item ->     
    def server = item.split('-').last()
    def fileName = "default"
    if(  item.contains('lab1')) {
        fileName = 'lab1.file'
    } else if(item.contains('lab2')) {
        fileName = 'lab2.file'
    } else if(item.contains('lab3')) {
        fileName = 'lab3.file'
    }    
    sh "scp ${fileName} ${ssh_user_name}@${server}:${spath}"
    }
}

相关问题