Создавайте и развертывайте файлы в нескольких папках в SVN в несколько папок на целевом сервере.

Я хочу автоматизировать операцию копирования и вставки вручную, используя SVN, Jenkins и Urban Code Deploy.

Теперь мы создали репозиторий SVN, чтобы иметь ту же структуру каталогов, что и структура Dir сервера Unix. Проблема в том, что я не могу выполнить чистое развертывание, так как мне нужно только выбрать файл, который изменен в любой папке, и поместить его в соответствующую папку на сервере Unix.

Я не могу понять, как создать задание Jenkins для выбора файлов из нескольких папок, создания одного пакета и развертывания с помощью Urban Code Deploy в нескольких папках на целевом сервере.

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

Это просто иллюстрация структуры папок на сервере SVN и Unix. Любая помощь приветствуется


person rocodg    schedule 31.07.2017    source источник
comment
Спасибо @nvoigt за редактирование. В следующий раз учту форматирование и опечатку.   -  person rocodg    schedule 31.07.2017


Ответы (2)


Вы можете выбрать только измененные файлы для конкретной версии, используя следующие команды, и извлечь их в соответствующие каталоги на вашем сервере 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

person ANIL    schedule 03.08.2017
comment
Спасибо, я смотрел с точки зрения одновременного выбора файлов из нескольких папок и создания сборки, которая при развертывании на целевом сервере поместит файлы в соответствующие каталоги. Если у вас есть какие-либо предложения, пожалуйста, не стесняйтесь комментировать. - person rocodg; 03.08.2017
comment
Если вы хотите одновременно скопировать файлы из нескольких папок в несколько папок в месте назначения, вам следует одновременно запустить несколько команд svn up. Если вы работаете в системе Linux, просмотрите этот поток, чтобы узнать, как вы можете запускать несколько команд одновременно: stackoverflow.com/questions/10909685/ - person ANIL; 03.08.2017

Я создал один скрипт 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"
}
person Parth H. Jadav    schedule 19.08.2017