我希望使用SVN,Jenkins和Urban Code Deploy自动化手动复制粘贴活动。
我们现在已经创建了一个SVN repo,它具有与Unix服务器Dir结构相同的目录结构。挑战在于,我无法进行干净的部署,因为我只需要选择在任何文件夹中更改的文件,并将其放在Unix服务器上的相应文件夹中。
我无法弄清楚如何创建Jenkins作业以从多个文件夹中选择文件并创建一个包并使用Urban Code Deploy部署到目标服务器上的多个文件夹。
a
|------b
| --------b
c
|-------d
--------v
--------m
这只是SVN和Unix服务器中文件夹结构的一个例子。任何帮助表示赞赏
答案 0 :(得分:0)
您可以使用以下命令仅选择特定修订版本的已修改文件,并将它们检出到Unix服务器中各自的目录:
svn checkout https://org.svn.host/path/to/your/file /path/to/target_dir --depth empty --revision <revisionNumber>
cd /path/to/target_dir
svn up file_you_want
答案 1 :(得分:0)
我制作了一个 PowerShell脚本来从多个文件夹中选取文件。 我也对一些 Jenkins项目做同样的事情。所以我希望它会对你有所帮助。 请随意请求任何帮助以了解以下脚本和/或如何使用此脚本。
脚本: -
################# USER INPUT STARTS #####################################################################################################
$TARGET="" #Give target path where you want to get only changed files with folder structure#
$SRCFILE="" #Source path, your SVN checkout#
$SVNURL="" #Give Repository URL For eg. "svn://0.0.0.0/abc/trunk/def"
$FINDSTR="" #Give Value For eg. "trunk/def/"
$Daysback="-06" #Give number of days. For eg. give "-01" if you want to get changed files from last 1 Day#
################# USER INPUT ENDS #####################################################################################################
$CurrentDate=Get-Date
$DatetoDelete=$CurrentDate.AddDays($Daysback)
$Daysback="1"
$CurrentDate=Get-Date
$CurrentDate=$CurrentDate.AddDays($Daysback)
$FROM1=$CurrentDate.Year
$FROM2=$CurrentDate.Month
$FROM3=$CurrentDate.Day
$TO1=$DatetoDelete.Year
$TO2=$DatetoDelete.Month
$TO3=$DatetoDelete.Day
[string]$FROM = (get-date).ToString("$FROM1-$FROM2-$FROM3");
[string]$TO = (get-date).ToString("$TO1-$TO2-$TO3");
[string]$DATE = "{$FROM}:{$TO}";
$DATE
$DIFFER=D:\Subversion\bin\svn diff "$SVNURL" --summarize -r $DATE #Here you have to give absolute path of your "svn.exe"
IF($DIFFER)
{
IF($DIFFER.count -GT 1)
{
for($i=0; $i -le ($DIFFER.Count-1); $i++)
{
$SYS11=$DIFFER[$i]
$APP11=($SYS11 -SPLIT ',*'+$FINDSTR)[1]
$FILEDIR="$APP11"
$FILE=Split-Path $APP11 -leaf
$EXTENSION=(Split-Path -Path $FILE -Leaf).Split(".")[1];
IF($EXTENSION)
{
$FILEDIR =$FILEDIR -replace $FILE, ""
$TARGETDIR="$TARGET\$FILEDIR"
IF (!(Test-Path $TARGETDIR))
{
New-Item $TARGETDIR -type Directory > $null
}
$FROM="$SRCFILE\$APP11"
$TARGETFILE="$TARGET\$APP11"
IF(Test-Path $FROM)
{
Copy-Item $FROM $TARGETFILE -force
ECHO "==============================================================================="
ECHO "$FROM"
ECHO "**************"
ECHO "$TARGETFILE"
ECHO "**************"
ECHO "NAME OF COPIED FILE ::: $FILE"
}
ELSE
{
ECHO "NOT FOUND $FROM"
}
}
}
}
ELSE
{
$SYS11=$DIFFER
$APP11=($SYS11 -SPLIT ',*'+$FINDSTR)[1]
$FILEDIR="$APP11"
$FILE=Split-Path $APP11 -leaf
$EXTENSION=(Split-Path -Path $FILE -Leaf).Split(".")[1];
IF($EXTENSION)
{
$FILEDIR =$FILEDIR -replace $FILE, ""
$TARGETDIR="$TARGET\$FILEDIR"
IF (!(Test-Path $TARGETDIR))
{
New-Item $TARGETDIR -type Directory > $null
}
$FROM="$SRCFILE\$APP11"
$TARGETFILE="$TARGET\$APP11"
IF(Test-Path $FROM)
{
Copy-Item $FROM $TARGETFILE -force
ECHO "==============================================================================="
ECHO "$FROM"
ECHO "**************"
ECHO "$TARGETFILE"
ECHO "**************"
ECHO "NAME OF COPIED FILE ::: $FILE"
}
ELSE
{
ECHO "NOT FOUND $FROM"
}
}
}
}
ELSE
{
ECHO "NO CHANGE IN $SVNURL"
}