TeamCity Kotlin DSL: как запустить скрипт PowerShell из файла, расположенного в папке DSL - PullRequest
0 голосов
/ 31 марта 2020

У меня есть конфигурация сборки, определенная в хранилище, которое строит проекты в других хранилищах. Некоторые шаги выполняются в PowerShell, и в настоящее время я написал все logi c в самом файле Kotlin, но его довольно сложно читать и поддерживать. Я думаю, что в этих скриптах будет легче работать, если они разделены .ps1 файлами. Я знаю, что есть возможность запускать сценарии в файлах, если вы укажете путь:

powerShell { 
    scriptMode = file { 
        path = "path\to\file.ps1"
    }
}

Проблема в том, что при выполнении шага он говорит, что не может найти папку .teamcity, в которой они находятся , Я не могу добавить их в другие репозитории, потому что некоторые сценарии необходимы в нескольких проектах.

Можно ли получить доступ к этой папке с этого шага или мне следует продолжить работу с грязными встроенными сценариями?

1 Ответ

0 голосов
/ 05 мая 2020

Итак, согласно документации, есть способ прочитать файлы в папке .teamcity . Однако это только в контексте DSL. Это не сработает для определения пути к скрипту, потому что во время выполнения этой части кода этот код не существует (я попробовал ls workdir). Так что вам нужно явно проверить папку. Чтобы сделать это, вы должны определить правила оформления заказа , например:

vcs {
    root(VCS)
    root(DslContext.settingsRoot, "+:.teamcity/scripts => tcscripts", "+:Configurations => configurations")
    cleanCheckout = true
}

Это будет извлекать папку скриптов в пределах .teamcity в папке с именем tscripts в root рабочий каталог. Конечно, вы можете изменить каталоги и добавить больше правил. После этого вы сможете вызывать их в следующих шагах:

powerShell {
    formatStderrAsError = true
    scriptMode = file {
        path = "tcscripts/your_script.ps1"
    }
}
...