Cree e implemente files en varias carpetas en SVN en varias carpetas en el server de destino

Estoy buscando automatizar una actividad de copydo manual usando SVN, Jenkins y Urban Code Deploy.

Ahora hemos creado un repository SVN para tener la misma estructura de directorys de la estructura Dir del server Unix. El desafío es que no puedo hacer una implementación limpia ya que solo tengo que elegir el file que se cambia en cualquier carpeta y colocarlo en la carpeta correspondiente en el server Unix.

No soy capaz de encontrar la manera de crear un trabajo en Jenkins para elegir files de varias carpetas y crear un package e implementar usando Urban Code Deploy en varias carpetas en el server de destino.

a |------b | --------b c |-------d --------v --------m 

Esto es solo una ilustración de la estructura de la carpeta, en el server SVN y Unix. Cualquier ayuda es apreciada

Puede elegir solo los files modificados para una revisión en particular usando los siguientes commands y verificarlos en sus respectivos directorys en su server 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

He creado una secuencia de commands de PowerShell para recoger files de varias carpetas. También hago lo mismo para algunos proyectos de Jenkins . Así que espero que te ayude. Por favor, siéntase libre de pedir ayuda para entender el siguiente guión y / o cómo usar este guión.

Guión: –

 ################# 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" }