Ahora tenemos que crear un pipeline nuevo, podemos simplemente importar este template del recién creado proyecto X++ (Dynamics 365) Samples and Tools de Github. Despues de importarlo lo modificaremos un poco, pero inicialmente será así:
Como podéis ver el pipeline tiene todos los pasos necesarios para generar el DP, pero algunos de ellos, los relacionados con las tasks de Dynamics 365, no cargan bien después de importar. Tenéis que añadir esos pasos a mano una vez importado el pipeline y configurarlos a mano.
Pipeline root #
Tienes que seleccionar para el Agent Pool: Hosted Azure Pipelines, y vs2017-win2016 como Agent Specification.
Get sources #
He mapeado dos cosas aquí: nuestro código en el primer mapeo y la carpeta Build que hemos creado antes con la solución y los archivos config. Si has puesto estos archivos en tu carpeta Metadata no necesitas el segundo mapping.
NuGet install Packages #
Este paso obtiene los nugets y los instala para su uso en cada ejecución. He tenido problemas con esta task.
El comando usa los archivos config que hemos puesto en la carpeta Build y, como podéis ver, está obteniendo los archivos de $(build.sourcesDirectory)\Build como hemos configurado en el paso Get sources. Si habéis puesto esos archivos en otro sitio tenéis que cambiar el path para que se ajuste a vuestra configuración.
Update Model Version #
Este es uno de los pasos que muestran errores pese a que tengo instaladas las herramientas de Dynamics 365 del marketplace en el proyecto de DevOps. Si lo tienes bien seguramente no tienes que tocar nada. Si tienes el problema simplemente añade la tarea «Update Model Version» y cámbialo par que quede así:
Tarea Build solution #
En este paso pondremos un valor comodín en el campo «Solution»: **\\*.sln. Si dejamos este comodín compilará todos los proyectos que tengas en el repo, y dependiendo del número de proyectos que tengas, la build podría fallar por timeout.
Yo resuelvo esto seleccionando una solución en concreto que contiene todos los modelos que tengo en el código. Esta solución la he guiardado en la carpeta Build, y si se crean nuevos modelos sólo hay que editarla.
Gracias a Ievgen Miroshnikov por decirmelo!
Podría haber algún problema adicional con los archivos rnrproj tal y como comenta Josh Williams en un comentario. Si tu proyecto fue creado antes del PU27 mejor crea una solución nueva para evitar problemas.
Create Deployable Package #
Este es otro de los pasos que no me cargaron bien. De nuevo, añádelo y cambia lo que necesites:
Add Licenses to Deployable Package #
Otro paso que me daba problemas. Hacemos lo mismo.
Y eso es todo. Puedes ejecutar las Azure hosted builds para probar si funciona. Para las primeras ejecuciones puedes deshabilitar los pasos posteriores a «Build solution» para ver si los nugets se descargan y instalan bien y se compila tu código. Una vez esté eso podemos seguir con la generación y publicación de DPs.
Ya has configurado tu Azure hosted build, ahora te toca a ti decidir en qué casos usarlas el viejo agente o el hospedado en Azure.