Jenkins限制管道中的Perforce视图

时间:2017-01-26 11:46:22

标签: jenkins perforce jenkins-pipeline jenkins-2

我有一个与我同步的Jenkins2管道:

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

其中myStream是传递给Jenkins构建作业的参数。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

基本上使用Jenkins Pipeline Syntax for "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/...'''
    ]
  ]
])