在不同的工作中共享相同的工作空间

时间:2019-06-28 09:35:10

标签: python azure-pipelines

我可以与其他作业共享一个作业中安装的相同工作区吗?

尤其是,我想继续将一项工作中安装的软件共享给以后的工作。根据{{​​3}},

  

默认情况下,当您在自托管代理上运行管道时,两次连续运行之间都不会清除任何子目录。

但是,下面的此管道在作业 J2 中失败了,因为在作业 J1 中安装的sphinx J2 中丢失了。 / p>

jobs:
- job: 'J1'
  pool:
    vmImage: 'Ubuntu-16.04'
  strategy:
    matrix:
      Python37:
        python.version: '3.7'
    maxParallel: 3

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
      architecture: 'x64'
  - script: python -m pip install --upgrade pip
    displayName: 'Install dependencies'
  - script: pip install --upgrade pip
    displayName: 'Update pip'
  - script: |
      echo "Publishing document for development version $(Build.BuildId)"
      pip install -U sphinx
    displayName: 'TEST J1'
  - script: |
      echo "TEST SPHINX"
      sphinx-build --help
    displayName: 'TEST SPHINX'

- job: 'J2'
  dependsOn: 'J1'

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.x'
      architecture: 'x64'

  - script: |
      echo "TEST SPHINX"
      sphinx-build --help
    displayName: 'TEST SPHINX'

1 个答案:

答案 0 :(得分:0)

此错误与Workspace不相关。

是的,可以在作业之间共享工作空间,并且在您的代码中,sphinx也位于您的工作空间中。 但是,它没有安装在作为全局路径的PATH中,因此,当您以后要使用并执行它时,由于错误的PATH值而失败。 / p>

在Ubuntu代理中,Pip默认安装了--user。这是代理用户,代理在您创建和使用VM映像时没有。如果您没有任何更改代码,则默认情况下会将其安装到~/.local/bin而非PATH上。

要解决此问题,您需要确保可以在PATH中找到正在使用的命令。如果该命令不在您的路径中,请包括它或使用绝对的完整路径。

因此,您应该使用 export 手动指定PATH值:

export PATH="xxx"

您可以检查此blog以获得更多详细信息。