Deployment Psake-多次运行同一任务

Deployment Psake-多次运行同一任务,deployment,psake,Deployment,Psake,我正在为我们的网站创建一个构建/部署脚本。我们的过程目前有点复杂,因为它需要用webconfig设置启动网站来更新我们的模式。然后我们关闭站点,将webconfig更改为不再更新模式,然后重新启动 由于任务的重复性,我们的任务列表多次包含两个任务 例如 调用Psake(加入路径$env:currentDir“\tasks\iis\u app\u deploy.ps1”)` -任务列表验证属性、StopApplicationPool、StartApplicationPool、StopApplica

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

由于任务的重复性,我们的任务列表多次包含两个任务

例如

调用Psake(加入路径$env:currentDir“\tasks\iis\u app\u deploy.ps1”)`
-任务列表验证属性、StopApplicationPool、StartApplicationPool、StopApplicationPool、StartApplicationPool、PutBackInLoadBalancer

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

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

这些就是台阶

  • 将部署过程分成更小的步骤(在我的例子中是第二步)
  • 创建包装器任务
  • 在这些中使用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
    }
    
    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
    }