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

Execute SVN Update in Jenkins - Copy a Folder to Web root Explicitly from SVN as a Build Step

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

我需要执行的构建步骤。

  1. 构建解决方案
  2. 发布
  3. 复制我的文件夹到网络根目录
  4. 同步

尝试 copy/update myFolder 到 Web 根目录时,fine.Problem 可以正常发布。 MyFolder 位于项目解决方案文件夹之外,因为我不能将它放在解决方案文件夹中。

注意:这个myFolder已经序列化了items/object,我需要在下一个step.It中同步复制到网络根目录以便同步。 并且此文件夹已提交给 SVN。

在我的 local 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.

我有 Subversion 插件 installed.Any 解决这个问题。

我还尝试使用下面的 Powershell 脚本

#Get checkout folder
TortoiseProc.exe /command:"update" /path:"C:\inetpub\wwwroot\Test\Website\App_Data\myFolder\"

它在我的本地 Windows Powershell 中有效,但在 Jenkins Windows Powershell 中无效

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


设置源代码管理部分

在作业配置页面的这一部分中,选择适当的版本控制系统(即 Subversion)并将作业指向项目的 URL,如下所示。还要注意 select 适当的签出策略。这是 Jenkins 将在您的作业运行时使用的内容(即 svn update),因为 Jenkins 将在作业的 工作空间 .[= 中的构建服务器上存储您的存储库的副本。 19=]

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

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

配置适当的构建步骤

Build/Publish 本地网站

假设您已经将脚本写入 build/publish 受版本控制的网站(我们称其为 !Publish Website.bat 作为示例)构建项目并在本地发布,您可以配置下面的步骤构建部分如下,

注意:%WORKSPACE%是一个内置环境变量,解析为作业的当前工作空间。 build-step下有一个link列出所有可以使用的暴露的不同环境变量。

作业运行时,无需任何进一步操作,作业现在将提取所有更改并执行批处理文件到 publish/build 您工作区内的本地网站。

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

将内容复制到 Webroot

假设您已经编写了用于在版本控制下复制网站内容的脚本(我们称之为 !Copy Website.bat),它获取已发布的文件并将它们复制到您的网络服务器上的适当目录,您可以配置构建部分下方的步骤如下,

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