Search code examples
azure-devopsnugetazure-pipelinespipelineartifact

Where to store installer binaries in azure devops pipeline


I was wondering what other people use to store tools required in the pipeline of a product, which are not part of the actual product.

Let me sketch our situation: We are using an azure devops pipeline to build and package our product. During the package process, we generate an full install and update package that can be shipped to customers. We have developed a separate tool that we use to to install our products (so this tool is not specific to the product of the pipeline, but is used for more or our product). We need to access the binaries of this tool (let's call this tool "installer") to generate the package.

Now my question is, where do I store the "installer" tool, so my pipelines can access it? The installer is a tool that is not referenced in a project of our product, so a nuget package doesn't seem right. Simply downloading the artifacts of its pipeline also doesn't seem viable, since the runs of a pipeline are removed after x amount of time.


Solution

  • Where to store installer binaries in azure devops pipeline

    Although the installer is a tool that is not referenced in a project of our product, we still could use nuget to manage this tool.

    As we know, if binaries are referenced by the project, we always set the dlls files in the lib forlder in the nuget package, which will be added as references for compile as well as runtime.

    For those binaries are not referenced by the project, we could store those installer binaries in the tools folder:

    <file src="..\..\InstallerBinariesA1.dll" target="tools" />
    

    You can check the document From a convention-based working directory for some more details.

    Then, we could store this tool package in the Azure Devops artifacts and you could access the binaries of this tool in the \packages folder after nuget restoring it to generate the package.

    Hope this help.