如何在Jenkins groovy

时间:2017-12-17 19:31:05

标签: jenkins jenkins-pipeline perforce

有一个选项可以通过Jenkins管道运行p4协调,如果有更改提交它们(p4发布)?

如果你有一些实现例子

编辑:

我的问题是如何在我的工作区中进行p4协调运行,然后如果进行了更改以提交它们。根据{{​​3}}允许“将资产提交回Perforce Helix(发布)”(这就是为什么我写p4发布并意味着p4提交)但他们没有提到p4协调。

我在我的代码中使用以下内容来同步流工作区中的最新版本文件:

line_ending = isUnix()  ? 'UNIX' : 'WIN'
checkout([
    $class: 'PerforceScm', 
    credential: '*****************************',
    filter: [[$class: 'FilterPathImpl', path: '//Automation']],
    populate: [$class: 'AutoCleanImpl', delete: false, modtime: false, parallel: [enable: false, minbytes: '1024', minfiles: '1', path: '/usr/local/bin/p4', threads: '4'], pin: '', quiet: true, replace: true], 
    workspace: [$class: 'ManualWorkspaceImpl', charset: 'none', name: "JENKINS-${NODE_NAME}", pinHost: false, spec: [allwrite: false, clobber: false, compress: false, line: line_ending, locked: true, modtime: false, rmdir: true, 
    streamName: '//<Stream_name>/name/...', 
    view: """
<Depot_path_to_sync>/...\t//JENKINS-${NODE_NAME}/<Depot_path_to_sync>/...
<Depot_path_to_sync>/...\t//JENKINS-${NODE_NAME}/<Depot_path_to_sync>/..."""]]
])

没有尝试通过jenkins提交,但我可以找到它的文档,所以我可能会处理它,但是,为了调和我找不到所以我要求这里的某个调和的例子。我相信提交它会使我的调试时间不足。

2 个答案:

答案 0 :(得分:0)

您可能最容易开发一些命令列表,以便首先运行Jenkins的外部,这样您就可以更轻松地尝试和尝试不同的事情。

然后致力于在Jenkins中自动执行命令。

p4 reconcile将客户端计算机上工作区的当前状态与已映射文件的头版本进行比较,并打开添加/编辑/删除/移动/等所需的文件。

随后,您单独发出p4 submit以将这些已更改的文件提交到服务器。

老实说,这通常不是人们以这种方式自动化的事情,所以也许您可以解释更多关于为什么您认为想要这样做的事情。

使用'reconcile'方法跟踪源代码中的更改对于交互式开发人员非常有用,他们可以在源代码树中漫游,例如使用他们的IDE,并进行各种更改,然后在他们感觉到他们的时候他们准备好提交更改,运行p4 reconcile让Perforce服务器找出他们在交互式编辑会话期间实际更改的文件。

人们通常使用Jenkins自动化他们的共享构建/测试环境,而不是自动执行各个开发人员执行的任务。

因此,自动Jenkins任务通常非常确定他们更改了哪些文件,因为这些自动化任务每次都会进行完全相同的更改(毕竟它们是自动化的)。

因此,自动Jenkins任务通常使用p4 edit命令告诉服务器它正在更改文件,然后它进行必要的更改,然后使用p4 submit命令提交更改

答案 1 :(得分:0)

我设置项目以使用perforce

使用jenkins管道进行构建和发布

p4publish执行p4调和,然后执行p4提交。 你可以看到日志。