【问题标题】:How do I transfer artifacts in Azure Pipelines between pipelines in the same azure project?如何在同一 Azure 项目中的管道之间传输 Azure Pipelines 中的工件?
【发布时间】:2019-11-29 22:03:10
【问题描述】:

我正在尝试设置 Azure Pipelines 以在此处为各种平台生成 Idris 1 二进制文件:https://github.com/zenntenn/Idris-dev from head 并使用它从此处为各种平台构建 Idris 2 head:https://github.com/zenntenn/Idris2

我的问题是我不知道如何正确配置这两个管道以使其正常工作。

我一直在尝试遵循此处的文档:

https://docs.microsoft.com/en-us/azure/devops/pipelines/artifacts/pipeline-artifacts?view=azure-devops&tabs=yaml

我不知道如何获得使其适用于 Idris 2 所需的确切 YAML。

Idris 1 管道在这里:https://dev.azure.com/zentenca/Idris/_build?definitionId=2

Idris 2 管道在这里:https://dev.azure.com/zentenca/Idris/_build?definitionId=1

这是我当前 Idris 1 azure-pipelines.yml 的相关部分:

  # Test on Linux
  - job: Linux
    pool:
      vmImage: 'ubuntu-16.04'
    steps:
    - script: |
        echo Collection ID is $(System.CollectionId)
        sudo add-apt-repository ppa:hvr/ghc
        sudo apt-get update
        sudo apt-get install ghc-8.2.2 cabal-install-2.2
        sudo update-alternatives --config opt-ghc
        sudo update-alternatives --config opt-cabal
      displayName: 'Prepare system'
    - script: |
        export PATH=/opt/ghc/bin:$HOME/.cabal/bin:$PATH
        cabal update
        CABALFLAGS="-fffi -fci" make
      displayName: 'Build Idris'
    - script: |
        export PATH=/opt/ghc/bin:$HOME/.cabal/bin:$PATH
        make test_c
      displayName: 'Run tests'
    - publish: $(System.DefaultWorkingDirectory)/
      artifact: LinuxHead

这是我目前为 Idris 2 的 azure-pipelines.yml 所拥有的:

# Build Idris 2 from Idris 1.  Idris 1 located here: https://github.com/idris-lang/Idris-dev
jobs:
  # Linux build using the latest Idris 1
  - job: Linux_Latest
    pool:
      vmImage: 'ubuntu-16.04'
    steps:
    - task: DownloadPipelineArtifact@2
      inputs:
        source: 'specific'
        artifact: LinuxHead
        project: e3cceb10-4a17-48c7-a9b8-72264bd71a81
        pipelineid: 2
        runVersion: 'latest'
    - script: | 
        echo Works so far
    displayName: 'Linux build using the latest Idris 1'

我正在尝试以一种我可以在 Idris 2 管道中访问它们的方式显示 Idris 1 的构建结果。

当前错误是:“输入字符串的格式不正确。”

如果在 Idris 2 azure-pipelines.yml 中我将 pipelineid: 更改为 pipeline: 我收到错误:

“TF50309:以下帐户没有足够的权限完成操作:Idris Build Service (zentenca)。执行此操作需要以下权限:查看项目级信息。”

使用管道的示例构建结果:在这里:https://dev.azure.com/zentenca/Idris/_build/results?buildId=35&view=results

【问题讨论】:

    标签: azure azure-devops continuous-integration azure-pipelines


    【解决方案1】:

    “输入字符串的格式不正确。”

    此错误信息的原因是您使用的参数不正确。例如,您应该使用buildType 而不是source 来指定下载由 生成的工件的类型。

    对于正确的格式,请在您的 Idris 2 的 azure-pipelines.yml 中尝试以下脚本:

    steps:
    - task: DownloadPipelineArtifact@2
      displayName: 'Download Pipeline Artifact'
      inputs:
        buildType: specific
        project: 'e3cceb10-4a17-48c7-a9b8-72264bd71a81'
        definition: {definitionid}
        buildVersionToDownload: latest
        artifactName: LinuxHead
    

    注意:definition 的值是您要下载工件的构建的definitionid

    【讨论】:

    • 我试过了,现在我得到错误:“TF50309:以下帐户没有足够的权限来完成操作:Idris Build Service (zentenca)。以下权限是需要执行此操作:查看项目级信息。”我已经通过了 Idris Build Service 的权限,但我不知道那里需要更改什么。 dev.azure.com/zentenca/Idris/_build/…
    • 您是否勾选了项目设置安全下的“查看项目级信息”权限?
    • 所有组都设置为允许(系统),尽管它列出的唯一用户是真实用户,而不是构建服务等。我尝试将 Idris 构建服务添加到拥有该权限的 Idris 团队,然后在管道中再次尝试,但我仍然遇到相同的错误。
    • 正常情况下,如果账户的权限设置为拒绝,即使在一个权限设置较大的组中,也不能继承权限设置。因为权限不允许通过继承来扩大。您介意准确搜索此 Build 服务帐号,然后检查或更改其权限集吗?
    • 在项目设置中我将Idris Build Service本身设置为允许所有内容,然后再次构建Idris2,仍然出现错误:##[error]TF50309:以下帐户没有足够的权限完成操作:Idris Build Service (zentenca)。执行此操作需要以下权限:查看项目级信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多