1

我有一个 Jenkins2 管道,我可以在其中同步:

p4sync charset: 'none',
       stream: myStream,
       format: clientName,
       populate: [$class: 'ForceCleanImpl', have: true, pin: '', quiet: true]

其中myStream是传递给 Jenkins Build Job 的参数。

我们确实有具有几 GB 数据的流,对于所有这些流,我只对只有几 MB 的特定子目录感兴趣。

有没有办法将客户端视图缩小到任何传入流的单个子目录?

4

2 回答 2

2

正如我在第一个答案的评论中提到的那样,虽然您可以使用经典的 depot 视图从流 depot 中获取内容,但如果从其他位置导入文件,则会遇到问题。

处理这个问题的正确方法是使用 Perforce 的Virtual Streams,它允许您制作过滤视图。

好处之一是您的流定义和虚拟流定义在同一个地方,而不是冒着更改流和忘记更改 Jenkins 配置的风险

于 2017-01-26T21:23:17.183 回答
0

基本上使用Jenkins Pipeline Syntax 的“p4sync”语法可以正常工作:

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/...'''
    ]
  ]
])
于 2017-01-26T15:36:25.920 回答