当前位置: 首页 > 面试题库 >

将文件从Jenkins工作区提交到SVN

袁法
2023-03-14
问题内容

我在Subversion存储库中有一个保存的项目,并使用Jenkins进行编译。当我运行构建时,Jenkins将项目拉入工作区目录。我需要将一个更改的文件从Jenkins工作区提交到Subversion。我该怎么做??

感谢您的回答…


问题答案:

您能否提供更多细节?确切地说,此文件是什么?为什么要在Jenkins构建中将其提交?您正在构建什么(Java?C ++ ?. NET?),以及如何构建它?

通常,除了
文件之外,您不应将任何东西置于版本控制之下。也就是说,如果可以构建它,则不应将其放入版本控制中。很多人喜欢将其内置代码提交到版本控制系统中,但这通常是一个大错误。二进制文件更大,并且很少差异。这将导致源存储库的编译代码达到90%-几乎所有代码都已过时。对于Subversion来说,这尤其成问题,因为Subversion无法(轻松地)删除过时的代码。

詹金斯(Jenkins)具有一项功能,可让您 存档生成
的文件以便于访问。我们一直在使用它。我们构建了代码,该程序可在Jenkins中下载。更好的是,Jenkins将删除较早的版本(您可以保存最近的X个版本,或者仅保存X天以下的版本)。并且,如果您有候选发布版本,则可以
锁定 该版本以防止其被删除。

但是,如果您坚持要这样做,则有几件事可以做,并且需要注意:

  1. 当您设置了Jenkins来自动构建每个更改,并且在版本控制系统中提交了更改时,Jenkins将会看到并开始新的构建。然后,詹金斯保存更改,查看更改,然后进行另一次构建。确保应该在进行构建时从Jenkins的考虑中排除文件或目录。您可以在指定结帐的URL时指定它。

  2. 与大多数版本控制系统不同,Subversion是独立于客户端的。有一个针对客户的实际API。Jenkins不需要标准的Subversion命令行客户端,因此请确保已安装。确保安装与SVNKit客户端内置的Jenkins兼容的客户端。由于Subversion 1.6、1.7和1.8均采用不同的客户端格式,因此尤其如此。

  3. 您可以在Jenkins中向您的构建添加多个 构建步骤 。只需添加一个新的Shell脚本或批处理脚本步骤,然后添加一个svn commit -m "comment of some sort"步骤。处理完前两点后,这很简单。但是,请仔细考虑为什么要这样做。

就像我之前说的,在99.9999%的时间中,您不应该使用Jenkins来提交它构建的更改。我确定 某个地方
存在0.0001%的原因,但我从未见过。如果要使其他项目可以通用访问构建文件,请使用Jenkin的功能来存档构建文件。

如果另一个构建需要Jenkins正在构建的产品,则可以使用“ 复制工件”插件将构建工件复制到另一个作业,然后启动该作业。更好的是,使用发布存储库系统。在Java中,您可以使用Nexus或Artifactory之类的Maven发布存储库。要使用工件并将其部署到该存储库,可以使用Ivy或Maven或Gradle。如果要构建.NET,请查看Nuget。



 类似资料:
  • 我从Jenkins管道开始,我想从任何jenkins目录外部复制一些视频文件到我的作业工作区目录。我正在使用文件操作插件为我的其他作业执行一些文件操作。有了这个插件,我可以将文件从我的工作区内部复制到外部: 例如,通过这一步,我可以将位于我的工作区中的4个视频文件复制到位于另一个磁盘中的上述目录中。 但我想做相反的事。我想将视频文件从另一个磁盘的源目录复制到工作区。我尝试了几种方法,但似乎“inc

  • 问题内容: 我是Jenkins和groovy脚本的新手,我想读取一个.txt文件,该文件位于其中一个作业的工作空间中。我正在尝试这样做: 但是会导致以下错误: groovy.lang.MissingMethodException:方法的无签名:hudson.FilePath.readFileFromWorkspace()适用于参数类型:(java.lang.String)值:[file.txt]

  • 问题内容: 我已经使用詹金斯了很多年了,但是我从来没有自己设置它,就像我在新工作中所做的那样。我遇到了几个问题。 默认工作空间位置 -最新的Jenkins似乎在Jenkins \ jobs [projectName] \ workspace中具有默认工作空间,并且对于每个构建都将被覆盖(或擦除(如果选择))。我认为应该将其放置在Jenkins \ jobs [projectName] \ buil

  • 默认工作区位置-最新的Jenkins似乎在Jenkins\jobs[projectName]\workspace中有默认的工作区,并且在每次构建时都被覆盖(如果选中,则被删除)。我认为它应该放在Jenkins\jobs[projectName]\build[build_id]\中,这样它就可以存储每个构建的工作区状态,以供将来参考? 在project>build_id页面上显示工作区--这与前面的

  • 问题内容: 我是jenkins的新手,我想添加带有电子邮件附件的测试报告。 我在用 插件发送电子邮件。电子邮件发送成功,但附件未发送。 我的测试报告在eclipse porject工作区内部生成,路径为 我如何使用此插件将测试文件与电子邮件一起附加? 问题答案: 我正在使用mac,我的解决方案适用于mac。但是我认为所有操作系统的概念都相同。 实际上,jenkin会自动从其工作区附加文件。为此,不

  • 真的...已经讨论了很多。 然而,有很多模棱两可之处,提供的一些答案。。。包括在JAR/执行器/驱动程序配置或选项中复制JAR引用。 应为每个选项澄清以下歧义、不清楚和/或省略的细节: 类路径如何受到影响 驾驶员 执行器(用于正在运行的任务) 两者都有 一点也不 对于任务(给每个执行者) 方法 方法 或 ,或者 别忘了,spack-提交的最后一个参数也是一个. jar文件。 我知道在哪里可以找到主