0

YAML ビルドでは、共有 YAML テンプレートを広く使用しています。このようなもの:

trigger: none

resources:
  repositories:
    - repository: templates
      type: git
      name: DFDevOps\cicd-templates
      ref: refs/tags/stable-1
      # http://tdc1tfsapp01:8080/tfs/DefaultCollection/DFDevOps/_git/cicd-templates

name: $(BuildVersionPrefix).$(DayOfYear)$(Date:HH)

jobs:
  - job: Build
    pool:
      demands: DotNetFramework
    workspace:
      clean: outputs
    timeoutInMinutes: 180
    steps:
      - checkout: self # self represents the repo where the initial Pipelines YAML file was found
        clean: true
        lfs: true

      - template: ci/ci-build.yml@templates
        parameters:
          releaseBranch: $(ReleaseBranch)

ただし、共有 YAML テンプレートは多くの場合、Powershell コードを実行する必要があります。これまでのところ、それを埋め込むか、テンプレートがロードする PS モジュールに配置します。

私は両方のアプローチが嫌いです。私は埋め込みが嫌いです:

  1. インテリセンなし
  2. 単体テストなし
  3. パイプラインの失敗に関する適切なエラー報告がない

モジュールはオリジンから切り離されており、多くのオーバーヘッドが必要になるため、モジュールを入れるのは嫌いです。

私の質問 - YAML テンプレートと同じリポジトリにある専用の ps1 ファイルに PS コードを配置し、実行時にそれらを利用できるようにすることは可能ですか?

4

1 に答える 1

0

そのcheckout: selfため、テンプレート リポジトリではなく、特定のパイプライン YAML が存在するリポジトリを参照します (それらがまったく同じでない限り)。

2 番目のチェックアウト ステップを追加checkout: templatesします。パイプラインに追加し、PowerShell スクリプト タスクの入力 (テンプレート内) に、チェックアウトしたばかりのスクリプトへのパスを指定します。

        scriptType: filePath
        scriptPath: $(Build.SourcesDirectory)/templates/pathToscript.ps1

テンプレートはコンパイル時にパイプラインに展開されるだけなので、そのフォルダーにアクセスできる必要があります。展開されたパイプラインをダウンロードすることにより、YAML パイプライン エディターでこれを確認できます: Download full YAML

于 2021-02-11T17:55:31.197 に答える