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

使用POST COMMIT钩子在SVN存储库上提交代码时,Jenkins作业自动触发

南门峰
2023-03-14
问题内容

我正在尝试使用Jenkins,docker和Ansible实现CI / CD管道。我
正在为版本控制系统使用SVN代码存储库。对于部署和
SVN代码存储库,我使用的是AWS EC2。部署和代码存储库位于单独的VM中。

我的要求

将代码提交到SVN存储库中时,需要触发一个
Jenkins Job。该工作将被称为ansible playbook,稍后将构建
项目,构建Docker映像并部署到EC2中。因此,对于我的SVN
代码存储库的任何更改,我需要构建Jenkins作业。

我目前的尝试

我在$ repo / hooks
文件夹下的post-commit.tmpl文件中添加了以下脚本。

REPOS="$1"
REV="$2"
UUID=`svnlook uuid $REPOS`
/usr/bin/wget \
  --header "Content-Type:text/plain;charset=UTF-8" \
  --post-data "`svnlook changed --revision $REV $REPOS`" \
  --output-document "-" \
  --timeout=2 \
  http://server/subversion/${UUID}/notifyCommit?rev=$REV

注意:我不希望从回购中抽出分钟/小时/周的时间表。取而代之
的是,我正在寻找代码更改的时间,然后我需要构建
Jenkins项目。所以我没有添加任何时间表。

但是我仍然没有得到詹金斯的最新代码。如何找出
与我的配置相关的问题?

更新了post-commit.tmpl文件


问题答案:

我做了很多尝试,通过使用答案中的指导来解决此问题。
最终,我得到了我面临的实际问题。我
在文件“ post-commit.tmpl”中添加了提交后脚本。创建
我的SVN信息库时默认获得此文件。无需添加“ post-commit.tmpl”,只需创建
文件“ post-commit”即可。它解决了我的问题。



 类似资料:
  • 问题内容: 我知道有很多类似的帖子,但是我还没有找到解决方案,其他帖子中提供的建议和解决方案也不太符合我所看到的。 该场景非常简单:我在Eclipse中有一个项目,并且当我将该项目中的更改签到Subversion服务器(即VisualSVN Server 2.5.3)时,我希望我们的Jenkins持续集成服务器(即Jenkins 1.546) )以获取此更改并开始新的构建。我不想从詹金斯投票。 我

  • 我有一个管道(jenkins)工作,它使用多个存储库。 存储库是这样签出的: 现在,我想在对任何存储库进行提交时触发该作业。如何配置?

  • 我有一个由github网络钩子触发的JenkinsPipeline作业,因此在提交到Github时会触发构建。但是,我只希望在向master分支提交时触发构建。目前,任何提交都会触发构建,即使提交是在功能分支上进行的。 有没有办法在不诉诸多分支工作的情况下实现这一点? 我在Jenkins配置、jenkinsfile或Github repo的webhook中看不到任何过滤分支(触发器)的方法。 我能

  • 如果我们在提交配置清单之前能够发现其中的语法错误将会是个好消息。 检查 Puppet 配置清单的语法可以使用 puppet parser validate 命令: # puppet parser validate /etc/puppet/manifests/site.pp err: Could not parse for environment production: Syntax error a

  • 问题内容: 我在Linux上运行SVN。我希望一旦提交就运行自动部署。根据我的搜索,提交后svn似乎可以解决问题。但是我在SVN安装中找不到SVN提交后。所以我想知道这是否是单独安装?我可以下载并安装任何SVN提交后挂钩吗? 问题答案: 这不是单独的安装。在您的存储库目录中,有一个“挂钩”目录。您可以找到post-commit.tmpl,只需修改文件并将其重命名为可执行文件即可。

  • 问题内容: 当它成功时,我正在尝试在Jenkins CI中进行构建后提交。 有没有办法做到这一点? 我的问题是,当我构建它时,我需要在工作区中生成一些dll提交给svn。 问题答案: 这取决于您用来构建源代码的构建技术(例如Ant,Maven,MSBuild或FianlBuilder)。要将生成结果检入到svn中,应在生成脚本的末尾添加一些新步骤。这一步只会将您的构建结果添加到svn中。例如,您的