Dynamics saturday madrid 2018 otro alm es posible para dynamics 365 - alberto y miguel angel
1. Miguel Angel Navarro Vera
Alberto Diaz Martin
Otro ALM es posible
para Dynamics 365
2.
3. About the Speaker
• Miguel Angel Navarro Vera
• Cloud Solutions Developer en ENCAMINA
• Especialista en desarrollo con Dynamics
CRM, SharePoint y Azure
• @Min4ve
• https://www.linkedin.com/in/miguelangel
navarrovera/
• manavarro@encamina.com
4. About the Speaker
• Alberto Diaz Martin
• CTIO en ENCAMINA
• Microsoft Azure MVP
• @adiazcan
• https://www.linkedin.com/in/albertodiaz
martin/
• alberto.diaz@encamina.com
5. Development infrastructure building blocks
Every development team building applications needs a development and test
infrastructure to design, develop, test and deploy custom software.
Developer
workstation
Team collaboration
& developer services
Production
environments
Pre-production dev
and test environments
6. Software development project timeline
Start coding
Servers
delivered
IT builds Dev/Test
environments
Request Dev/Test
resources from IT
Project starts
Gather requirements
Prioritize work
IT kicks off
procurement Deployment
Performance
testing
Testing
Bug fixing
Production
10. Ciclo de vida en una solución CRM
Definición de agente de compilación
DEV Branch SolutionBaseX
REMOTO
FETCH
PULL
BranchDesarrollador1 LOCAL
Nos traemos los ultimos cambios de la rama base
COMMIT
PUSH
Subimos nuestra rama combinada con los cambios
De la rama base a Visual Studio Online
Hacemos merge de estos cambios en nuestra rama localAplicamos todos los cambios de nuestra rama
PULLREQUEST
BranchDesarrollador1 REMOTA
Hacemos una peticion para incorporar nuestros
cambios a larama base
Integración continua DEV INTEGRACION PRE-PRODUCCION
PRODUCCION
FIXING
FORMACION
RELEASE MANAGEMENT
Cuando el responsable del
desarrollo decide que se han
completado todas las tareas
correspondientes al
desarrollo, lanzara un
compilacion de RELEASE.
Es un agente de compilacion
con unas reglas especiales,
que se lanzara en unas
condiciones determinadas.
En este caso manualmente, y
que desplegaran nuestra
solucion en diferentes
entornos, automaticamente,
siempre y cuando cumplan
todas las condiciones.
MANAGED
MANAGED
CI – RELEASE MANAGEMENT
DEV -> INTEGRACION
UNMANAGED
MANAGED
Aquí se copiaran los artifacts
donde se dejaran para el release
management.
UNMANAGED
UNMANAGED
MANAGED
Definición de agente de compilación
BRANCH FIX REMOTA
FETCH
PULL
BRANCH FIX LOCAL
Nos traemos los ultimos cambios de la rama base
COMMIT
PUSH
Subimos nuestra rama combinada con los cambios
De la rama base a Visual Studio Online
Hacemos merge de estos cambios en nuestra rama localAplicamos todos los cambios de nuestra rama
PULLREQUEST
BRANCHFIX REMOTA
Hacemos una peticion para incorporar nuestros
cambios a larama base
UNMANAGED
UNMANAGED
CI – RELEASE MANAGEMENT
INTEGRACION -> PRE
CI – RELEASE MANAGEMENT
PRE -> FIX
PRE -> FORMACION
PRE -> PRODUCCION
11. DEV Branch SolutionBaseX
REMOTO
FETCH
PULL
BranchDesarrollador1 LOCAL
Nos traemos los ultimos cambios de la rama base
COMMIT
PUSH
Subimos nuestra rama combinada con los cambios
De la rama base a Visual Studio Online
Hacemos merge de estos cambios en nuestra rama localAplicamos todos los cambios de nuestra rama
PULLREQUEST
BranchDesarrollador1 REMOTA
Hacemos una peticion para incorporar nuestros
cambios a larama base
Integración continua
REL
U
Desarrolllo
12. Definición de agente de compilación
DEV Branch SolutionBaseX
REMOTO
PULLREQUEST
Hacemos una peticion para incorporar nuestros
cambios a larama base
Integración continua DEV
Cuando el responsable del
desarrollo decide que se han
completado todas las tareas
correspondientes al
desarrollo, lanzara un
compilacion de RELEASE.
Es un agente de compilacion
con unas reglas especiales,
que se lanzara en unas
condiciones determinadas.
En este caso manualmente, y
que desplegaran nuestra
solucion en diferentes
entornos, automaticamente,
siempre y cuando cumplan
todas las condiciones.
CI
D
Aquí se copiaran los artifacts
donde se dejaran para el release
management.
UNMANAGED
Definición de agente de compilación
Integración
Continua
13. DEV INTEGRACION PRE-PRODUCCION
RELEASE MANAGEMENT
el
han
reas
.
cion
es,
as.
nte, y
a
M
MANAGED
CI – RELEASE MANAGEMENT
DEV -> INTEGRACION
UNMANAGED
MANAGED
UNMANAGED
UNMANAGED
MANAGED
Definición de agente de compilación
UNMANAGED
CI – RELEASE MANAGEMENT
INTEGRACION -> PRE
CI – RELEASE MANAGEMENT
PRE -> FIX
PRE -> FORMACION
PRE -> PRODUCCION
Entrega
14. DEV INTEGRACION PRE-PRODUCCION
PRODUCCION
FIXING
FORMACION
NAGEMENT
MANAGED
MANAGED
CI – RELEASE MANAGEMENT
DEV -> INTEGRACION
UNMANAGED
MANAGED
UNMANAGED
MANAGED
BRANCH FIX REMOTA
PULLREQUEST
Hacemos una peticion para incorporar nuestros
cambios a larama base
UNMANAGED
UNMANAGED
CI – RELEASE MANAGEMENT
INTEGRACION -> PRE
CI – RELEASE MANAGEMENT
PRE -> FIX
PRE -> FORMACION
PRE -> PRODUCCION
Entrega
15. FIXING
SE MANAGEMENT
BRANCH FIX REMOTA
FETCH
PULL
BRANCH FIX LOCAL
Nos traemos los ultimos cambios de la rama base
COMMIT
PUSH
Subimos nuestra rama combinada con los cambios
De la rama base a Visual Studio Online
Hacemos merge de estos cambios en nuestra rama localAplicamos todos los cambios de nuestra rama
PULLREQUEST
BRANCHFIX REMOTA
Hacemos una peticion para incorporar nuestros
cambios a larama base
UNMANAGED
UNMANAGED
CI – RELEASE MANAGEMENT
PRE -> FIX
PRE -> FORMACION
PRE -> PRODUCCION
Bug Fixing
16. DEV INTEGRACION PRE-PRODUCCION
PRODUCCION
FIXING
FORMACION
ANAGEMENT
MANAGED
MANAGED
CI – RELEASE MANAGEMENT
DEV -> INTEGRACION
UNMANAGED
MANAGED
UNMANAGED
MANAGED
BRANCH FIX REMOTA
PULLREQUEST
Hacemos una peticion para incorporar nuestros
cambios a larama base
UNMANAGED
UNMANAGED
CI – RELEASE MANAGEMENT
INTEGRACION -> PRE
CI – RELEASE MANAGEMENT
PRE -> FIX
PRE -> FORMACION
PRE -> PRODUCCION
Entrega
17. Entornos
DEV INTEGRACION PRE-PRODUCCION PRODUCCION
FIXING
FORMACION
CI – RELEASE MANAGEMENT
DEV -> INTEGRACION
CI – RELEASE MANAGEMENT
PRE -> FIX
PRE -> FORMACION
PRE -> PRODUCCION
CI – RELEASE MANAGEMENT
INTEGRACION-> PRE-PRODUCCION
UNMANAGED
MANAGED
UNMANAGED
MANAGED
UNMANAGED
MANAGED
MANAGED
CI – RELEASE MANAGEMENT
FIX -> DEV
DEVELOPER 1
DEVELOPER 2
DEVELOPER n
18. Modelo de desarrollo
Esquema
Entidades
Campos
1: N/N: N
relaciones
Option Sets
Plantillas
Email
Contratos
Artículos KB
Mail merges
Procesos /
Pasos / Código
Workflows
Diálogos
Flujos de
proceso de
negocio
Reglas de
negocio
Acciones
Recursos
Web
Plugins (Dll’s)
Mensajes SDK
Interfaz de
usuario
Formularios
Vistas
Gráficos
Paneles
SiteMap
Ribbons
Misc
Roles de
seguridad
Perfiles de
seguridad de
campo
Roles de
conexión
Informes
Publicador de
la solución
Configuración
del sistema
21. Git flow
DEV Branch REMOTA
FETCH
PULL
Branch Dev 1 LOCAL
COMMIT
PUSH
PULLREQUEST
Branch Dev 1 REMOTA
CI
2
1
6
7
8
9
10
11
DEV Branch LOCAL
3
MERGE
4
5
25. Continuous Delivery (CD) – a DevOps practice
Issues
• Slow delivery cadence
• Limited predictability when deploying
• Complexity when deploying
Value
• Consistency
• Accelerated deployment
• Repeatability
• Human error reductionDEV
26. ¿Por qué automatizar las entregas?
DEV Branch SolutionBaseX
REMOTO
DEV
INTEGRACION
PRE-PRODUCCION
PRODUCCION
FIXING
FORMACION
RELEASE MANAGEMENT
CI – RELEASE MANAGEMENT
DEV -> INTEGRACION
UNMANAGED
MANAGED
UNMANAGED
UNMANAGED
MANAGED
CI – RELEASE MANAGEMENT
PRE -> FIX
PRE -> FORMACION
PRE -> PRODUCCION
MANAGED
UNMANAGED
UNMANAGED
28. Recapitulando
• Visual Studio es nuestro amigo
• Ramas para control del código y de las Versiones
• Feature Branch
• Fix Branch
• Labels
• Deploy Branch
• Release Management para el despliegue
29. Dynamics 365 Community
The Dynamics 365 Community is a site where you can find community contributions, ask questions and
interact with Microsoft Dynamics peers and experts. The community has over 200K members and is
growing.
New UI/UX: https://community.dynamics365.com
Enseñar la solución en CRM con la entidad
Crear la solución de Visual Studio con la estructura vacía (en teoría la abrimos para no perder el tiempo)
Descargar la solución desde el CRM
Abrimos una solución ya descargada para no esperar
Enseñar como está estructurado el Proyecto
Creo un nuevo JS en VS
Registramos el JS desde Visual Studio
Creo un Pluging desde VS
Registro con el PowerShell
Descargamos la solución
Hacemos las modificaciones necesarias en el JS
Hacemos la modificación en el pluging
Desplegamos la solución y probamos
Enseñar la solución en CRM con la entidad
Crear la solución de Visual Studio con la estructura vacía (en teoría la abrimos para no perder el tiempo)
Descargar la solución desde el CRM
Abrimos una solución ya descargada para no esperar
Enseñar como está estructurado el Proyecto
Creo un nuevo JS en VS
Registramos el JS desde Visual Studio
Creo un Pluging desde VS
Registro con el PowerShell
Descargamos la solución
Hacemos las modificaciones necesarias en el JS
Hacemos la modificación en el pluging
Desplegamos la solución y probamos
Enseñar la solución en CRM con la entidad
Crear la solución de Visual Studio con la estructura vacía (en teoría la abrimos para no perder el tiempo)
Descargar la solución desde el CRM
Abrimos una solución ya descargada para no esperar
Enseñar como está estructurado el Proyecto
Creo un nuevo JS en VS
Registramos el JS desde Visual Studio
Creo un Pluging desde VS
Registro con el PowerShell
Descargamos la solución
Hacemos las modificaciones necesarias en el JS
Hacemos la modificación en el pluging
Desplegamos la solución y probamos