установить PATH в лазурных конвейерах в Windows - PullRequest
6 голосов
/ 06 октября 2019

Я использую конвейеры Azure для создания двоичного файла Rakudo для Perl 6 в Windows.

Это мой azure-pipelines.yml файл:

jobs:
- job: Windows
  pool:
    vmImage: 'vs2017-win2016'
  steps:
    - bash: |
        mkdir -p $(Build.SourcesDirectory)/rakudo-win
        curl -L https://github.com/rakudo/rakudo/releases/download/2019.07.1/rakudo-2019.07.1.tar.gz | tar xz
        mv rakudo-2019.07.1 rakudo
        cd rakudo
        C:/Strawberry/perl/bin/perl Configure.pl --gen-moar --gen-nqp --backends=moar --prefix=$(Build.SourcesDirectory)/rakudo-win
        make
        make install

    - bash: |
        echo "##vso[task.prependpath]$(Build.SourcesDirectory)/rakudo-win/bin"

    - bash: |
        perl6 -v

Конвейерный скрипт создает perl6 двоичный штраф внутри папки $(Build.SourcesDirectory)/rakudo-win/bin. Внутри $(Build.SourcesDirectory)/rakudo-win/bin действительно есть perl6.exe. Чтобы сделать его доступным, я установил путь, добавив его в сценарии bash. Но когда я пытаюсь выполнить команду perl6 -v, сборка завершается неудачей на этом этапе.

Я искал похожие проблемы в SO здесь , здесь , здесь .

Я так и не смог решить свою проблему. Любая помощь, как сделать бинарный файл perl6 доступным в PATH?

EDITED

Следующее, что я сделал, было создание другого скрипта .yml следующим образом:

jobs:
- job: Windows
  pool:
    vmImage: 'vs2017-win2016'
  steps:
    - script: |
        call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
    - pwsh: |
        mkdir -p C:\rakudo-win
        Invoke-WebRequest -Uri "https://github.com/rakudo/rakudo/releases/download/2019.07.1/rakudo-2019.07.1.tar.gz" -OutFile "rakudo.tar.gz"
        tar -xvf .\rakudo.tar.gz
        cd rakudo-2019.07.1
        C:\Strawberry\perl\bin\perl Configure.pl --gen-moar --gen-nqp --backends=moar --prefix=C:\rakudo-win
        make
        make install
    - pwsh: |
        $oldpath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
        $newpath = "C:\rakudo-win\bin;$oldpath" 
        Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newpath
    - script: |
        SET PATH=C:\rakudo-win\bin;%PATH%

    - script: |
        perl6 -v

и попытался изменить PATH два раза в powershell и еще один в cmdline. Но все равно выдает следующую ошибку:

'perl6' is not recognized as an internal or external command,
operable program or batch file.

Любая помощь?

1 Ответ

3 голосов
/ 06 октября 2019

почему бы просто не сделать это:

- script: |
  PATH=$BUILD_SOURCESDIRECTORY/rakudo-win/bin:$PATH perl6 -v
...