在Jenkins中执行SVN更新-作为构建步骤,将文件夹从SVN明确复制到Web根目录

MKE*_*KEF 0 powershell batch-file jenkins jenkins-plugins

我是Jenkins CI的新手,我试图通过构建步骤来在工作中获取SVN更新(myFolder)。我想明确地将某些文件复制到Web根目录,因为我无法将它们包含在解决方案中。

我需要执行的构建步骤。

  1. 建立解决方案
  2. 发布
  3. myFolder复制 到Web根目录
  4. 同步

直到发布为止都可以正常工作。尝试将myFolder复制/更新到Web根目录时出现问题。 MyFolder位于项目解决方案文件夹之外,因为我无法将其放在解决方案文件夹中。

注意:myFolder已序列化下一步需要同步的项目/对象,应按顺序复制到Web根目录以进行同步。并且此文件夹已提交给SVN。

在我的本地CMD中,以下批处理文件可以正常工作,但是当我在Jenkins中执行Execute Windows Batch Command时,它会停在

-从SVN更新源代码-正在 运行更新...

@echo off

cls
echo     -- Initiating system instance variables...
echo.    -- Setting the variables...

:: Here you need to make some changes to suit your system.
set SOURCE=C:\inetpub\wwwroot\Test\Website\App_Data\myFolder\
set SVN=C:\Program Files\TortoiseSVN\bin

:: Unless you want to modify the script, this is enough.

echo. %SOURCE%
echo. %SVN%
echo. ++ Done setting variables.
echo.
echo    -- Updating source from SVN
echo.   -- Running update...
"%SVN%\TortoiseProc.exe" /command:update /path:"%SOURCE%" /closeonend:1
echo. ++ Done.

echo. -- Cleaning up...
set SOURCE=
set SVN=
echo. ++ Done.
Run Code Online (Sandbox Code Playgroud)

我已安装Subversion插件。针对此问题的任何解决方案。

而且我尝试使用下面的Powershell脚本

#Get checkout folder
TortoiseProc.exe /command:"update" /path:"C:\inetpub\wwwroot\Test\Website\App_Data\myFolder\"
Run Code Online (Sandbox Code Playgroud)

它可以在我的本地Windows Powershell中使用,但不能在Jenkins Windows Powershell中使用

Ant*_*ney 5

为了帮助回答您的问题,我将解释一项工作的配置,该工作应适应您要实现的目标:执行后,在版本控制下构建项目,svn update并将生成的文件移至单独的目录。


设置“源代码管理”部分

在作业的配置页面的此部分中,选择适当的版本控制系统(即Subversion),然后将作业指向您项目的URL,如下所示。还请注意选择适当的退房策略。这是Jenkins在您的作业运行时将使用的(即svn update),因为Jenkins会将存储库的副本存储在作业工作区中的构建服务器上。

在此处输入图片说明

在不进行任何进一步操作的情况下,此作业仅会在运行此作业时通过上面配置的适当检出策略从存储库中提取所有更改。

但是,您希望Jenkins的工作在运行时实际做一些有意义的事情,例如构建/发布项目。这是通过构建步骤实现的,因此让我们配置构建步骤。

配置适当的构建步骤

在本地建立/发布网站

假设您已经编写了用于在版本控制下构建/发布网站的脚本(以它!Publish Website.bat为例),该脚本可以构建项目并在本地发布,您可以按以下方式配置“构建”部分下的步骤,

在此处输入图片说明

注意:%WORKSPACE%是一个内置环境变量,可解析为作业的当前工作空间。在构建步骤下有一个链接,列出了所有可以使用的不同环境变量。

现在,无需进行任何进一步的操作,该作业将在运行此作业时下拉所有更改并执行批处理文件以在您的工作空间中本地发布/构建网站。

考虑到您希望这些新生成的文件驻留在您网站的webroot文件夹中,以便这些更改反映在您的网站上,还没有完成。为了简单起见,我们可以继续并添加另一个构建步骤来执行复制。

将内容复制到Webroot

假设您已经编写了脚本,以在版本控制下复制网站的内容(我们称之为!Copy Website.bat),该脚本将已发布的文件复制到Web服务器上的相应目录中,则可以按以下方式配置“构建”部分下的步骤,

在此处输入图片说明

现在,当作业运行时,它将svn update在其本地工作空间上对存储库执行,并执行前面的构建步骤(即,构建/发布解决方案并将内容复制到您的webroot)。