Saya memiliki saluran pipa Yaml yang saya coba pahami dan perbaiki hal-hal tertentu. Karena saya baru dalam hal ini, ada beberapa hal yang tidak dapat saya pahami dalam saluran yang ada ini. Saya ingin tahu apa yang dilakukan tugas di bawah ini. Saya tidak melihat skrip PowerShell sebaris di sini, lalu mengapa itu dibuat sebagai PowerShell. Tugasnya adalah menambahkan POMLXX dll di folder ABC_x64-$(osSuffix)\bin, tetapi bagaimana skrip di bawah ini melakukannya

- powershell: |
            Set-Variable -Name PATH -Value "$env:PATH;$(IppRoot)\redist\intel64_win\ipp;$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin;$(Build.BinariesDirectory);$(PuLib)/imports/Pulib67/dll/amd64;$(POMLXX)/runtimes/win-x64/native"
            Write-Host "##vso[task.setvariable variable=PATH]$PATH"
          displayName:  'Add AbcRoot, IPP binaries, Pulib67 and POMLXX to PATH on Win'
          condition:    eq(variables['Agent.OS'], 'Windows_NT')

- bash: |
            export LD_LIBRARY_PATH="$(IppRoot)/redist/intel64_win/ipp:$(Build.SourcesDirectory)/MyProject_x64-$(osSuffix)/lib"
            echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$LD_LIBRARY_PATH"
            echo "##vso[task.setvariable variable=DYLD_LIBRARY_PATH]$LD_LIBRARY_PATH"
          displayName:  'Add OrzRoot, IPP binaries and LibFT4222 to (DY)LD_LIBRARY_PATH on Linux and Mac'
          condition:    in(variables['Agent.OS'], 'Darwin', 'Linux')
3
ZZZSharePoint 16 Maret 2021, 15:52

2 jawaban

Jawaban Terbaik

Bagian ini adalah powershell:

Set-Variable -Name PATH -Value "$env:PATH;$(IppRoot)\redist\intel64_win\ipp;$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin;$(Build.BinariesDirectory);$(PuLib)/imports/Pulib67/dll/amd64;$(POMLXX)/runtimes/win-x64/native"
Write-Host "##vso[task.setvariable variable=PATH]$PATH"

Itu menambahkan banyak jalur ke variabel powershell PATH (set-variable -Name PATH) termasuk variabel lingkungan jalur yang turun dari agen, dan kemudian mengekspornya kembali ke agen (Write-Host dengan string perintah khusus) dengan mengatur ulang variabel Azure Pipelines PATH. Variabel itu akan diatur dalam konteks tugas selanjutnya sehingga mereka dapat menemukan alatnya.

Ini adalah sedikit peretasan untuk mempertahankan perubahan pada lingkungan ke tugas baru dalam konteks pekerjaan yang sama.

Lihat juga:

| setelah powershell: menginstruksikan parser YAML untuk menafsirkan blok indentasi berikutnya sebagai string multi-baris.

Lihat juga:

Solusi yang lebih baik

Ada solusi yang lebih baik, terlihat sangat mirip:

powershell: |
  write-host "##vso[task.prependpath]$(IppRoot)\redist\intel64_win\ipp"
  write-host "##vso[task.prependpath]$(Build.SourcesDirectory)\ABC_x64-$(osSuffix)\bin"
  ... etc

Perintah ini secara khusus dibuat untuk menambahkan jalur ke lingkungan PATH dan akan berfungsi bahkan jika tugas Pemasang Alat lainnya berjalan setelah bagian skrip Anda.

Lihat juga:

2
jessehouwing 16 Maret 2021, 13:17

Untuk bagian pertama dari pertanyaan Anda ("Saya tidak melihat skrip PowerShell sebaris"), sintaksnya

- powershell: |

Adalah singkatan untuk skrip sebaris. Untuk bagian kedua dari pertanyaan, tampaknya tugas mencoba untuk menambahkan direktori terlebih dahulu ke variabel lingkungan PATH di dalam tugas, lalu "mengekspor" (melalui task.setvariable) nilainya sebagai variabel rilis ke tugas lain/ pekerjaan/tahapan.

Lebih dari itu saya tidak bisa mengatakan tanpa klarifikasi tambahan dari pertanyaan Anda, dan/atau keluaran dari pekerjaan yang dijalankan.

1
WaitingForGuacamole 16 Maret 2021, 13:01