2
votes

I am trying to set up Azure Pipelines to have the Idris 1 binary produced for the various platforms here: https://github.com/zenntenn/Idris-dev from head and use it to build Idris 2 head for the various platforms from here: https://github.com/zenntenn/Idris2 .

My problem is I can't figure out how to configure the two pipelines properly to make this work.

I have been trying to follow the documentation here:

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

I can't figure out how to get the exact YAML needed to make it work for Idris 2.

Idris 1 pipeline is here: https://dev.azure.com/zentenca/Idris/_build?definitionId=2

Idris 2 pipeline is here: https://dev.azure.com/zentenca/Idris/_build?definitionId=1

This is the relevant section of my current 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

This is what I have currently for Idris 2's 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'

I am trying to have the build results of Idris 1 show up in a way that I can access them in the Idris 2 pipeline.

The current error is: "Input string was not in a correct format."

If in the Idris 2 azure-pipelines.yml I change pipelineid: to pipeline: I get the error:

"TF50309: The following account does not have sufficient permissions to complete the operation: Idris Build Service (zentenca). The following permissions are needed to perform this operation: View project-level information."

Example build result using pipeline: is here: https://dev.azure.com/zentenca/Idris/_build/results?buildId=35&view=results

1

1 Answers

1
votes

"Input string was not in a correct format."

The caused of this error message is that the argument you used is not correct. For example, you should use buildType instead of source to specified the type of Download artifacts produced by.

For correct format, please try the follow script in your Idris 2's 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

Note: The value of definition is the definitionid of the build which you want to download the artifact.