6
我试图在管道脚本中同步到Perforce,但是从documentation我没有看到设置“工作空间行为”的方法,即使插件本身似乎有that capability。“p4sync”的Jenkins管道语法
我希望“工作区”等同于“手动(自定义视图)”设置,我可以按照here所述在UI中进行配置。我需要传递什么参数到p4sync
任务才能实现?
我试图在管道脚本中同步到Perforce,但是从documentation我没有看到设置“工作空间行为”的方法,即使插件本身似乎有that capability。“p4sync”的Jenkins管道语法
我希望“工作区”等同于“手动(自定义视图)”设置,我可以按照here所述在UI中进行配置。我需要传递什么参数到p4sync
任务才能实现?
您将需要使用完整的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/...'''
]
]
])
推测这会使整个视图发生同步。有没有办法将指定映射文件与要检出的文件集分开?例如 - 我们有很多大型仓库,每个项目都知道它需要什么。所以如果我们可以指定一个简单的高级映射,我们可以让构建进行同步。否则,我们要么过多地映射+同步,要么根据项目映射+同步 - 复制信息并增加维护。 (注释5分钟规则) –
使用ManualWorkspace时,视图(map + sync)是唯一的,您可以在流水线中添加多个“checkout”步骤或将一些代理委派给Groovy库。请记住,您必须使用不同的工作区名称来执行多个“结帐”步骤。 –
在'项目'环境中,数据流可能会更好,因为每个孩子都会继承父级的视图,从而节省复杂映射的重复。 Jenkins'p4-plugin'支持ManualWorkspaceImpl和StreamsWorkspaceImpl中的流,具体取决于您需要多少控制。 –