2016-09-19 103 views
6

我试图在管道脚本中同步到Perforce,但是从documentation我没有看到设置“工作空间行为”的方法,即使插件本身似乎有that capability“p4sync”的Jenkins管道语法

我希望“工作区”等同于“手动(自定义视图)”设置,我可以按照here所述在UI中进行配置。我需要传递什么参数到p4sync任务才能实现?

回答

8

您将需要使用完整的checkout DSL,p4sync DSL只是基本的。最简单的方法是使用片段生成器(流水线语法链接),从SCM列表中选择checkout: General SCM,然后Perforce Software

然后,您将能够定义详细的视图。例如:

checkout([ 
    $class: 'PerforceScm', 
    credential: 'phooey1666', 
    populate: [ 
    $class: 'AutoCleanImpl', 
    delete: true, 
    modtime: false, 
    pin: '', 
    quiet: true, 
    replace: true 
    ], 
    workspace: [ 
    $class: 'ManualWorkspaceImpl', 
    charset: 'none', 
    name: 'jenkins-${NODE_NAME}-${JOB_NAME}', 
    pinHost: false, 
    spec: [ 
     allwrite: true, 
     clobber: false, 
     compress: false, 
     line: 'LOCAL', 
     locked: false, 
     modtime: false, 
     rmdir: false, 
     streamName: '', 
     view: ''' 
     //depot/... //jenkins-${NODE_NAME}-${JOB_NAME}/... 
     -//depot/tests/... //jenkins-${NODE_NAME}-${JOB_NAME}/tests/...''' 
    ] 
    ] 
]) 
+0

推测这会使整个视图发生同步。有没有办法将指定映射文件与要检出的文件集分开?例如 - 我们有很多大型仓库,每个项目都知道它需要什么。所以如果我们可以指定一个简单的高级映射,我们可以让构建进行同步。否则,我们要么过多地映射+同步,要么根据项目映射+同步 - 复​​制信息并增加维护。 (注释5分钟规则) –

+0

使用ManualWorkspace时,视图(map + sync)是唯一的,您可以在流水线中添加多个“checkout”步骤或将一些代理委派给Groovy库。请记住,您必须使用不同的工作区名称来执行多个“结帐”步骤。 –

+0

在'项目'环境中,数据流可能会更好,因为每个孩子都会继承父级的视图,从而节省复杂映射的重复。 Jenkins'p4-plugin'支持ManualWorkspaceImpl和StreamsWorkspaceImpl中的流,具体取决于您需要多少控制。 –