Ya estamos listos para configurar nuestra pipeline en Azure DevOps. Esta pipeline va a consistir de tres pasos: creación de la VM, build, y borrado de la VM:
Primero de todo comprobaremos que nuestra pipeline se ejecuta en Azure (Azure Pipelines):
Los pasos de crear y borrar se ejecutarán en una pipeline de Azure. El de build se ejecutará en el pool DevTestLabs que hemos creado, o el nombre que le hayáis dado al configurar el artefacto en DevTest Labs o el script en la VM.
Crear VM en Azure DevTest Labs #
Creamos una nueva pipeline y elegimos “Use the classic editor”. Nos aseguramos de que hemos seleccionado TFVC como origen y hacemos clic en “Continue” y “Empty job”. Añadimos una nueva tarea a la pipeline y buscamos “Azure DevTest Labs Create VM”. Sólo tenemos que rellenar la información necesaria con los parámetros de nuestra suscripción, lab, etc.
Recordad que este paso tiene que ejecutarse en una pipeline de Azure.
Build #
Este es muy fácil. Exportamos una build y la importamos.
Este paso tiene que ejecutarse en vuestro pool:
Opcional: usar SelectiveSync (no recomendado, ver siguiente apartado) #
Podéis sustituir la tarea Database Sync por un script de PowerShell que solo sincroniza las tablas de vuestros modelos:
¡Muchas gracias a Joris por el consejo!
Opcional: usa las d365fo.tools para sincronizar tus paquetes/modelos #
Esta opcion es mejor que usar SelectiveSync. Puedes sincronizar sólo tus paquetes o modelos y ganar algo de tiempo. Este comando usa sync.exe como Visual Studio y debería ser mejor que usar SelectiveSync.
Añadimos una nueva tarea de PowerShell, seleccionamos Inline Script y este es el comando:
Invoke-D365DbSyncModule -Module "Module1", "Module2" -ShowOriginalProgress -Verbose
Opcional: usa las d365fo.tools para publicar los reports de SSRS #
Si quieres añadir el paso de desplegar los reports en tu pipeline puedes ahorrar un poco de tiempo más usando las d365fo.tools y desplegando sólo los reports de tus modelos como hemos hecho con la sincronización de la DB.
Ejecutaremos esto en una nueva task de PowerShell:
Publish-D365SsrsReport -Module YOUR_MODULE -ReportName *
Borrar VM de Azure DevTest Labs #
Es muy parecido al primer paso de crear, completamos los campos de suscripción, labs y VM y listo:
Y este paso, igual que el de crear, se ejecutan en el pool de Azure.
Dependencias y condiciones #
Cuando tengamos los 3 pasos configurados tenemos que añadir unas dependencias y condiciones a algunos de ellos. Por ejemplo, asegurarnos que el paso de borrado de la VM solo se ejecuta cuando falle el paso de build, pero que no lo haga cuando falle el de creación.
Build #
El paso de build depende del de crear VM, y sólo debería ejecutarse si el paso previo ha terminado bien:
Borrar VM #
El paso de borrado depende de los anteriores y sólo debe ejecutarse si el de creación termian bien. Si falla el primero no hay que borrar nada:
Esta es la condición personalizada que usaremos:
and(always(), eq(dependencies.Job_1.status, 'Succeeded'))
Si necesitáis saber cómo se llama el primer paso de vuestra pipeline, exportadla a YAML y lo encontraréis ahí:
Si este paso fallase al ejecutar la build, no borréis la VM aun, primero cambiad el nombre de la VM en el paso de borrado, guardad la pipeline, y luego usad el desplegable para seleccionar la que queréis borrar.
2 Comments
I have installed the Dev.tools in build server and try run the Deploy reports to sepcific model but its failed, also could you please help with how i can use deploy repots script Publish-D365SsrsReport -Module YOUR_MODULE in my pipeline.
PS C:\windows\system32> Publish-D365SsrsReport -Module XXXXXXXXXXXXXX
Microsoft.Dynamics.AX.AosConfig.AzureConfig.bindir: K:\AosService\PackagesLocalDirectory
Module: XXXXXXXXXXX
ReportName: *
Getting the protocol and port …
Protocol: http://; Port: 80
Reporting Servers: 127.0.0.1
Testing: http://127.0.0.1:80/ReportServer …
Checking status of Report Server URL: http://127.0.0.1:80/ReportServer
Success! Status check of Report Server URL: http://127.0.0.1:80/ReportServer
Testing reporting services completed.
Start deploying reports …
Publish-AXReport : An error occurred while retrieving module with module name pattern XXXXXXXXXXXX
At K:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\Reporting.psm1:504 char:9
+ Publish-AXReport -MaxDegreeOfParallelism 1 -ErrorAction Conti …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Publish-AXReport], DirectoryNotFoundException
+ FullyQualifiedErrorId : An error occurred while retrieving module with module name pattern BrunswickGlobalTemplate,Microsoft.D
ynamics.AX.Framework.Management.Reports.PublishReportCommand
0.6093814 Seconds.
[14:10:09][Publish-D365SsrsReport] Something went wrong while deploying the SSRS Report(s) | Errors occured during report deployment.
WARNING: [14:10:09][Publish-D365SsrsReport] Stopping because of errors
could you help how build script on deploy reports in pipeline ? $(DynamicsSDK)\DeploySSRSReports.ps1
Check if the SSRS service is running, and also that the module names are the correct ones.