使用只读变量提高管道安全性

通过此更新,我们将使用只读变量提高管道安全性。 此外,现在可以在部署作业的任何生命周期挂钩内的任务中定义输出变量,并在下游步骤和同一阶段的作业中使用它。

有关详细信息,请查看下面的 功能 列表。

功能

常规:

Azure Pipelines:

注意

若要在生成代理上正常工作,VSTest 任务需要安装 .NET 4.6.2 或更高版本。

常规

通过 Azure AD 租户策略限制组织创建

Azure DevOps 管理员现在可以利用新的 Azure AD 策略。 通过此策略,可以限制创建连接到公司 Azure Active Directory 的新 Azure DevOps 组织。 若要了解有关策略的详细信息,请参阅 此处的文档。

Azure Pipelines

只读变量

系统变量记录为不可变,但实际上它们可能被任务覆盖,下游任务会选取新值。 通过此更新,我们加强了管道变量的安全性,使系统和队列时间变量成为只读的。 此外,还可以通过将 YAML 变量标记为只读, 如下所示。

variables:
- name: myVar
  value: myValue
  readonly: true

支持部署作业中的输出变量

现在可以在部署作业的 生命周期挂钩 中定义输出变量,并在同一阶段的其他下游步骤和作业中使用它们。

在执行部署策略时,可以使用以下语法访问跨作业的输出变量。

  • 对于 runOnce 策略: $[dependencies.<job-name>.outputs['<lifecycle-hookname>.<step-name>.<variable-name>']]
  • 对于 Canary 策略:$[dependencies.<job-name>.outputs['<lifecycle-hookname>_<increment-value>.<step-name>.<variable-name>']]
  • 对于 滚动 策略: $[dependencies.<job-name>.outputs['<lifecycle-hookname>_<resource-name>.<step-name>.<variable-name>']]
// Set an output variable in a lifecycle hook of a deployment job executing canary strategy
- deployment: A
  pool:
    vmImage: 'ubuntu-latest'
  environment: staging
  strategy:                  
    canary:      
      increments: [10,20]  # creates multiple jobs, one for each increment. Output variable can be referenced with this.
      deploy:
        steps:
        - script: echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the deployment variable value"
          name: setvarStep
        - script: echo $(setvarStep.myOutputVar)
          name: echovar

 // Map the variable from the job
- job: B
  dependsOn: A
  pool:
    vmImage: 'ubuntu-latest'
  variables:
    myVarFromDeploymentJob: $[ dependencies.A.outputs['deploy_10.setvarStep.myOutputVar'] ]
  steps:
  - script: "echo $(myVarFromDeploymentJob)"
    name: echovar

详细了解如何 设置多作业输出变量

避免回滚关键更改

在经典发布管道中,通常依赖于计划的部署进行定期更新。 但是,如果有关键修补程序,可以选择启动带外手动部署。 这样做时,旧版本会继续按计划进行。 这带来了挑战,因为当部署按计划恢复时,手动部署将回滚。 你们中的许多人报告了此问题,我们现在已修复此问题。 使用修补程序,手动启动部署时,将取消环境中所有较旧的计划部署。 仅当排队选项被选为“部署最新并取消其他”时,这才适用。

删除 Azure Pipelines 托管池中的旧映像

2020 年 3 月 23 日,我们将从 Azure Pipelines 托管池中删除以下映像。

  • Windows Server 2012 R2 与 Visual Studio 2015 (vs2015-win2012r2)
  • Mac OS High Sierra 10.13 (macOS-10.13)
  • Windows Server Core 1803 (win1803)

通过删除这些映像,我们将继续更有效地推出较新的映像版本。

若要详细了解如何删除这些映像,检查删除 Azure Pipelines 托管池中的旧映像博客文章。

后续步骤

注意

这些功能将在未来两到三周内推出。

前往 Azure DevOps 并查看。

如何提供反馈

我们很想听听你对这些功能的看法。 使用帮助菜单报告问题或提供建议。

提出建议

你还可以在 Stack Overflow 上获得社区的建议和问题的答案。

此致

Vijay Machiraju