Шаги сообщества Octopus deploy - это просто сценарии Powershell с переменными. Вы можете отредактировать Powershell, чтобы настроить любую переменную для пути «Начать в» и передать это запланированной задаче. Я могу привести вам пример, который вам нужен.
Обновить
После тщательного изучения сценария Posh для задачи, я думаю, что лучшим вариантом было бы добавить один параметр для XML-файла, который определяет параметры задачи, и установить его на этапах развертывания Octopus. Это даст вам максимальную возможность исправления в случае, если вам нужно указать какие-либо другие параметры, кроме параметра «Начать в».
Обновление 2
Итак, я написал собственный шаг, чтобы делать то, что вы хотели, а затем посмотрел на ленту сообщества, глупый я. Уже есть шаблон основы для создания запланированной задачи из файла XML. XML позволит вам установить рабочий каталог. Шаблон шага называется «Создание запланированных задач из XML», и вы можете найти его по адресу http://library.octopusdeploy.com/step-templates/26c779af-4cce-447e-98bb-4741c25e0b3c/actiontemplate-create.-scheduled-tasks-from-xml.
Кроме того, вот где я собирался с настраиваемым шагом, это просто Powershell:
$ErrorActionPreference = "Stop";
Set-StrictMode -Version "Latest";
function New-ScheduledTask {
param (
[Parameter(Mandatory = $true)][hashtable] $octopusParameters
)
$arguments = @{
TaskName = $octopusParameters['TaskName']
User = $octopusParameters['RunAsUser']
}
if ($octopusParameters['RunAsPassword']) {
$arguments.Password = $runAsPassword
}
if ($octopusParameters.ContainsKey('RunWithElevatedPermissions')) {
if ([boolean]::Parse($octopusParameters['RunWithElevatedPermissions'])) {
$arguments.RunLevel = 'Highest'
}
}
switch ($octopusParameters['Schedule']) {
'Once' {
$triggerArguments.Once = $true
$triggerArguments.At = $runAt
}
'Daily' {
$triggerArguments.Daily = $true
$triggerArguments.At = $runAt
if ($interval) {
$triggerArguments.DaysInterval = $octopusParameters['Interval']
}
}
'Weekly' {
$triggerArguments.Weekly = $true
$triggerArguments.At = $runAt
if ($interval) {
$triggerArguments.WeeksInterval = $octopusParameters['Interval']
}
}
'Startup' {
$triggerArguments.AtStartup = $true
}
'Logon' {
$triggerArguments.AtLogOn = $true
}
}
$actionArguments = @{
Execute = $octopusParameters['Executable']
Argument = $octopusParameters['Arguments']
WorkingDirectory = $octopusParameters['WorkingDirectory']
}
$arguments.Action = New-ScheduledTaskAction @actionArguments
$triggerArguments = @{
TaskName = $taskName
User = $runAsUser
}
$arguments.Trigger = New-ScheduledTaskTrigger @triggerArguments
Write-Output "Creating Scheduled Task - $taskName"
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction:SilentlyContinue
Register-ScheduledTask @arguments | Out-Null
Write-Output "Successfully Created $taskName"
}
# only execute the step if it's called from octopus deploy,
# and skip it if we're runnning inside a Pester test
if (Test-Path -Path "Variable:octopusParameters") {
New-ScheduledTask $octopusParameters
}
person
Ben Richards
schedule
30.04.2017