読み取り専用変数を使用したパイプラインのセキュリティの強化

この更新プログラムでは、読み取り専用変数を使用してパイプラインのセキュリティを強化しています。 さらに、デプロイ ジョブのライフサイクル フック内のタスクで出力変数を定義し、同じステージ内のダウンストリーム ステップとジョブで使用できるようになりました。

詳細については、以下の 機能 の一覧を参照してください。

機能

全般:

Azure Pipelines:

Note

VSTest タスクがビルド エージェントで正しく動作するには、.NET 4.6.2 以降のインストールが必要です。

全般

Azure AD テナント ポリシーを使用してorganization作成を制限する

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>']]
  • カナリア戦略の場合: $[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 でホストされているプールでの古いイメージの削除に関するブログ記事をチェック。

次の手順

Note

これらの機能は、今後 2 ~ 3 週間にわたってロールアウトされます。

Azure DevOps に進み、見てみましょう。

フィードバックの提供方法

これらの機能についてご意見をお聞かせください。 ヘルプ メニューを使用して、問題を報告したり、提案を提供したりします。

ご提案の送信

Stack Overflow のコミュニティからアドバイスや質問に回答してもらうこともできます。

よろしくお願いします。

ヴィジャイ・マキラジュ