MicrosoftDocs / azure-docs

Open source documentation of Microsoft Azure
https://docs.microsoft.com/azure
Creative Commons Attribution 4.0 International
10.28k stars 21.47k forks source link

What should be the Agent Pool if a Module targets multiple platforms #19252

Closed nelsonmorais closed 5 years ago

nelsonmorais commented 5 years ago

Let's say we have a Module with the following platforms: "platforms": { "amd64": "./Dockerfile.amd64", "arm32v7": "./Dockerfile.arm32v7", "windows-amd64": "./Dockerfile.windows-amd64" }

What should be the Agent Pool on such cases? Is this scenario supported? Do we have to create multiple module-<platform>.json files and then have multiple Agent Jobs each targeting its own Platform?


Document Details

Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

asergaz commented 5 years ago

Great question @nelsonmorais , thanks for asking! I have assigned the issue to the content author to evaluate and update as appropriate.

shizn commented 5 years ago

@nelsonmorais For now you need to maintain multiple deployment.template.json by yourself for multiple os/arch. In our next 1.7.0 release, we will officially support this scenarios. There will be an os/arch selector in status bar, and you can also put multiple *.template.json file in the solution folder. 1.7.0 will be released by the end of this week. image

nelsonmorais commented 5 years ago

@shizn Thank you for the update, but I think you're referring to the experience on VSCode while I was looking for answers regarding the configuration of the Azure DevOps task Azure IoT Edge.

On your post you mentioned that for now I need to maintain multiple deployment template files per os/arch, but the Azure IoT Edge task configuration (see image) only refers to the module.json file(s). I've tried (without success) the following:

This did not work, and as soon as there was no module.json file, then nothing got built, even though I had the module.json task parameter pointing to a valid module.\<os/arch>.json file. If I have a module.json file present then that file is used instead of the file that I explicitly configured on the module.json parameter to point to a module.\<os/arch>.json.

What I need to know is how to configure the task(s) (see image) to support this multiple configurations, as the task does not have an input for the deployment.\<os/arch>.template.json you mentioned, but only for the module.json, and the option I tried with the module files per os/arch did not work.

This was my failed attempt to use multiple tasks per os/arch (note: on the module.json File paramater I had the value **/module.amd64.json and on the other task **/module.windows-amd64.json):

image

image

michaeljqzq commented 5 years ago

@nelsonmorais , the multiple architecture support is already added in vscode IoT Edge tooling in 1.6.0. The support for CI/CD scenario is going to be released by this week. There will be extra options for deployment.template.json file path, and default platform. For the different platform, you need to set corresponding build agent.

The documentation for the multiple architecture support is under construction, @shizn is working on it.

michaeljqzq commented 5 years ago

@nelsonmorais The Azure IoT Edge has been In-House task. (Which means you can uninstall the Edge extension and see the Edge task by default for all accounts). And 2.0.0 support the multiple architecture. You can check the documentation for guide

LeivoSepp commented 5 years ago

How to set up Raspberry PI as a self-hosted arm32v7 agent for Azure DevOps is explained here in step-by-step. http://internetofthing.io/post/how-to-setup-raspberry-pi-as-an-azure-devops-agent I created this instruction as I couldn't find anything like this from the web.