2

我正在为我们的网站创建一个构建/部署脚本。我们的流程目前有点复杂,因为它需要使用 webconfig 设置启动网站来更新我们的架构。然后我们关闭站点,更改 webconfig 不再更新架构,然后重新启动它。

由于任务的重复性,我们的 -taskList 任务不止一次。

例如。

Invoke-Psake (Join-Path $env:currentDir "\tasks\iis_app_deploy.ps1") `
-taskList ValidateProperties,StopApplicationPool,<random stuff>,StartApplicationPool,StopApplicationPool,StartApplicationPool,PutBackInLoadBalancer

在此任务列表中,每个任务只执行一次。有没有办法指定 psake 来运行任务而不检查它们之前是否运行过?

4

1 回答 1

1

我找到了我自己问题的答案。嵌套

这些是步骤;

  1. 将部署过程分成更小的步骤(在我的例子中是两个)
  2. 创建一个包装任务
  3. 在其中使用 Invoke-Psake 使其工作。

这是一个示例代码;

task BackendDeployment -depends     ValidateProperties{
    # Deploy and update schema
    $self = Join-Path ($env:scriptPath) "tasks\iis_app_deploy.ps1"
    Write-Output "Running schema changes"
    Invoke-Psake $self  -TaskList   StopApplicationPool,`
                                    MSDeploy,`
                                    CopyLicenses,`
                                    CopyConfigs,`
                                    UpdateConfigForSchemaChanges,`
                                    StartApplicationPool,`
                                    WarmUpApplications, `
                                    WaitForAction `
                        -properties $properties
    Write-Output "Running final deployment"
    Invoke-Psake $self -TaskList    StopApplicationPool,`
                                    CopyConfigs,`
                                    StartApplicationPool,`
                                    WarmUpApplications `
                        -properties $properties
}
于 2014-07-01T01:17:37.957 回答