La imagen VHD que hemos descargado se puede usar como máquina de desarrollo sin ningún paso adicional, se ejecuta Visual Studio, lo conectamos a nuestro proyecto de AZDO y listo. Pero si la queremos usar como máquina de build tenemos que hacer unas cuantas cosas primero.
Recordad que el usuario y contraseña por defecto de estas máquinas son Administrator y Pass@word1.
Deshabilitar servicios #
Primero de todo pararemos y deshabilitaremos algunos servicios como el Batch, Management Reporter, SSAS, SSIS, etc. Cualquier cosa que no se necesite para ejecutar una build.
Crear un nuevo usuario de SQL #
Abriremos SSMS (como administrador) y crearemos un nuevo usuario de SQL como una copia del axdbadmin. Después abriremos el archivo web.config y actualizaremos el usuario y contraseña de la DB con el que acabamos de crear.
Preparar SSRS (opcional) #
Si váis a desplegar reports como parte de vuestra build tenéis que ir a SSMS y ejecutar la siguiente query contra la DB de reporting:
exec DeleteEncryptedContent
Scripts de PowerShell #
La build por defecto que corre en la máquina de build usa varios scripts de PowerShell para ejecutar tareas. Voy a añadir un script adicional llamado PrepareForAgent.
Los scripts se encuentran en la carpeta C:\DynamicsSDK de la VM.
PrepareForBuild #
Este script viene con la VM y debemos modificarlo para evitar una cosa: el backup de PackagesLocalDirectory que se hace en la primera ejecución de cada build. Tenemos que evitar que se haga o perderemos una hora en cada ejecución hasta que se termine.
No lo necesitamos porque nuestra máquina de build será nueva cada vez que ejecutemos la pipeline!
Así que abrimos el script, vamos a la línea 696 y buscamos esta parte del código:
# Create packages backup (if it does not exist).
$NewBackupCreated = Backup-AX7Packages -BackupPath $PackagesBackupPath -DeploymentPackagesPath $DeploymentPackagesPath -LogLocation $LogLocation
# Restore packages backup (unless a new backup was just created).
if (!$NewBackupCreated)
{
Restore-AX7Packages -BackupPath $PackagesBackupPath -DeploymentPackagesPath $DeploymentPackagesPath -LogLocation $LogLocation -RestoreAllFiles:$RestorePackagesAllFiles
}
if (!$DatabaseBackupToRestore)
{
$DatabaseBackupPath = Get-BackupPath -Purpose "Databases"
Backup-AX7Database -BackupPath $DatabaseBackupPath
}
else
{
# Restore a database backup (if specified).
Restore-AX7Database -DatabaseBackupToRestore $DatabaseBackupToRestore
}
Tenemos que cambiarlo para que sea así:
if ($DatabaseBackupToRestore)
{
Restore-AX7Database -DatabaseBackupToRestore $DatabaseBackupToRestore
}
Simplemente dejaremos la parte de restaurar la DB y nos saltamos el backup, o perderemos 45 minutos por ejecución por algo que no necesitamos porque la VM se borra en cada ejecución.
Opcional (pero recomendado): instalar las d365fo.tools #
Simplemente ejecutaremos esto:
Install-Module -Name d365fo.tools
Podemos usar las tools para hacer sincronizaciones parciales, por modelos o desplegar sólo nuestros reports en vez de todos.