2016-09-19 120 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中的流,具體取決於您需要多少控制。 –