Psake - 多次运行相同的任务

时间:2014-06-30 08:05:36

标签: deployment psake

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

由于任务的重复性,我们的-taskList多次执行任务。

例如。

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

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

1 个答案:

答案 0 :(得分:1)

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

这些是步骤;

  1. 将部署过程分为较小的步骤(在我的情况下为两个)
  2. 创建包装器任务
  3. 使用Invoke-Psake使其发挥作用。
  4. 这是一个示例代码;

    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
    }