Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

El enlace a la publicación original, lo encontrarás al final de este artículo.

El último miércoles de cada mes, Salesforce Developers organiza una sesión de "Ask Me Anything" (AMA) en nuestro canal de YouTube. Nos sumergimos profundamente en un tema mensual y respondemos preguntas en vivo publicadas en Twitter , nuestro grupo de la comunidad de desarrolladores y el chat en vivo de YouTube , además de compartir recursos relacionados con el tema. El mes pasado, las estrellas se alinearon cuando nos dimos cuenta de que estaríamos en TrailblazerDX durante nuestro marco de tiempo de transmisión típico. Entonces, por primera vez (cue el confeti), organizamos Ask Me Anything en persona .


El 27 de abril, la directora de la comunidad de desarrolladores, Christie Fidura, organizó un AMA sobre integración continua en TrailblazerDX. A ella se unieron los promotores de desarrollo de Salesforce, Alba Rivas y Philippe Ozil , junto con el desarrollador de CLI de Salesforce, Shane McLaughlin . Una audiencia de más de 60 Trailblazers hizo preguntas sobre CI durante nuestra sesión de 40 minutos. Aunque no pudimos transmitir en vivo este AMA, encontrará respuestas de nuestros expertos, así como recursos útiles sobre todo lo relacionado con la integración continua, en esta publicación de blog.

Sesión de preguntas y respuestas de AMA

¿Qué herramientas gratuitas recomienda para configurar CI?

Felipe:
Probablemente esto no sea una sorpresa, pero soy un gran admirador de GitHub Actions . Lo que me gusta de él es que es muy accesible y fácil de usar. Lo que puede hacer es mirar los proyectos de otros, verificar su configuración de CI (porque está basada en texto) y básicamente aplicar lo mismo a su propio proyecto. Debe consultar algunas de nuestras aplicaciones de muestra para ver algunos ejemplos de cómo comenzar.

Independientemente de su proveedor de IC, también recomiendo estas dos herramientas, que me resultan muy útiles para automatizar tareas:

  • jq (herramienta para analizar JSON con una CLI)
  • PMD (herramienta para ejecutar el análisis de código estático de Apex)

¿Cuál es el KPI principal para una integración exitosa de CI? Como mides el exito?

Felipe:
Una de las cosas que estamos analizando en términos de KPI es el tiempo que tardan en ejecutarse los trabajos de CI. Monitoreamos cuánto tiempo toma, y también monitoreamos las tendencias. Es muy importante mirar las tendencias. Si ve que su tiempo de compilación aumenta significativamente con el tiempo, hay algo mal y debe tomar medidas. Al final, independientemente de la herramienta de CI que utilice, el tiempo de ejecución cuesta dinero, por lo que debe tener cuidado de no tener trabajos que se ejecuten durante demasiado tiempo.

Para abordar esto, puede crear trabajos especializados, de modo que no esté repitiendo ciertas tareas "caras" con demasiada frecuencia. Por ejemplo, no desea probar el empaquetado cada vez que realiza un cambio en su proyecto. Solo desea realizar pruebas de empaque tal vez de vez en cuando para ahorrar costos (tiempo de ejecución de CI).

También observamos de cerca la evolución de la cobertura del código. Con el tiempo, se agregan nuevas funciones a su proyecto y su base de código se expande, por lo que desea asegurarse de que la cobertura del código no disminuya en el camino.

¿Cuál es la mejor práctica para implementar perfiles sin destruir su organización y cuáles son las implicaciones de implementar todo cada vez?

Shane:
La mejor práctica para implementar perfiles es no hacerlo. SOLO DI NO.

Felipe:
Tenemos un ejemplo de esto en la aplicación de muestra E-Bikes , donde implementamos un perfil para un usuario invitado anónimo de Experience Cloud. Pero como dijo Shane, es mejor evitarlo tanto como sea posible.

En lo que respecta a CI/CD, ¿existe una "salsa secreta" para tratar los problemas que surgen después de insertar el código? ¿Existen herramientas o mejores prácticas que puedan ayudar a relacionarlos con los cambios de código?

Felipe:
La mejor manera de evitar esto es tener flujos de trabajo de CI sólidos. Desea tener pruebas unitarias, pruebas de integración, pruebas de extremo a extremo y pruebas de aceptación del usuario antes de que su código llegue a producción. La regla de oro en el desarrollo de software es que cuanto antes detecte los problemas, menos costoso será solucionarlos.

Con CI/CD, puede hacer coincidir prácticamente el contenido de Git con las implementaciones de producción. Una vez que haya identificado la implementación que causó el problema, puede ejecutar una combinación de comandos git diff (consulte los documentos ) y git blame (consulte los documentos ) (o el equivalente en su IDE favorito) en el código infractor para identificar al autor.

¿Despliegues parciales versus despliegues completos?

Shane:
Me gustan los despliegues completos. La razón es que sé que no se desplegarán todos y sé que no me falta ninguna pieza. Cada vez que he intentado hacer implementaciones parciales para la detección y luego noto: "Oye, esto es lo que cambió", siento que siempre he hecho más trabajo para mí. Ahora tiene la capacidad de validar una implementación, de modo que cuando realmente desee implementarla, puede programarla para que se realice en un momento determinado (por ejemplo, en medio de la noche cuando no hay nadie en el sistema). No puedo pensar en una buena razón para no implementar todo. También resuelve algunos problemas de datos donde, supongo que esto se convierte en una preferencia de sabor, las personas están cambiando cosas en producción que nunca llegan al control de código fuente, y quiero que ahora coincidan con mi control de código fuente.

Entonces, si alguien cambia un informe, porque puede hacerlo, quiero anular ese informe y volver a colocarlo como está en el control de código fuente. Esto los disuade de cambiar un informe nuevamente, en lugar de venir y hacerlo en una caja de arena. Creo que esto ayuda a fomentar el buen comportamiento.

¿Cómo se trabaja con sandboxes en CI?

Shane:
Creo que la primera pregunta sería: "¿Por qué estás usando sandboxes?" Podría ser porque desea tener una organización que tenga todo, como producción. Es más una caja de arena completa. Y probablemente tendría ese guión como una implementación que me gusta hacer antes de implementar la producción. Luego, el truco es que antes de hacer una implementación de producción, tomaré el mismo código y lo colocaré en el espacio aislado. Hay dos cosas: se asegura de que va a funcionar y mantiene esa caja de arena consistente con la producción.

La otra cosa para la que ve a las personas que usan sandboxes es este concepto de "paquete dependiente de la organización". Entonces, la idea con el empaque es que deben tener metadatos completos y todas las referencias son internas. Eso es difícil a veces si su organización es un desastre. Los paquetes dependientes de la organización son un paquete y han enumerado todo lo que hay dentro de ellos. Pero se implementan en su organización y no tienen que ser una dependencia completa, siempre que la organización tenga lo que necesitan.

Cuando mi equipo realiza una implementación complicada que lleva mucho tiempo con grandes cargas de datos, tenemos varias personas trabajando en ese sistema. Tenemos una ventana muy corta en la que el sistema puede estar inactivo y, actualmente, tenemos que hacerlo durante el fin de semana. Estamos tratando de minimizar el impacto en los negocios durante toda la semana. ¿Tiene alguna recomendación sobre cómo podemos gestionar esto de manera más eficiente?

Alba:
Cuando trabaje con sandboxes, mi recomendación es que pruebe source-tracking . Con esta característica, puede incluir fácilmente sandboxes en su canalización de CI y esto acelera el proceso de implementación. Sin embargo, esto no se aplica a las organizaciones de producción.

Felipe:
También hay un complemento CLI de Salesforce aportado por la comunidad llamado SFDX Git Delta que compara diferentes confirmaciones de Git, calcula la diferencia de metadatos entre ellas y le permite implementar la diferencia resultante. Este tipo de implementación incremental es significativamente más rápida que una implementación completa. Puede encontrar más información sobre el complemento en esta publicación de blog , y debe intentarlo para reducir el tiempo de inactividad de producción durante sus futuras implementaciones.

¿Cómo abordas las pruebas A/B? Si quiero implementar una función que creo que reducirá el tiempo del ciclo de ventas en un 15 %, ¿puedo incluirla en un subconjunto de usuarios y probarla?

Shane:
permisos Es posible implementar algunos objetos, diseños o páginas flexibles nuevos, pero no asignarlos a todos en la organización. O para los componentes de la interfaz de usuario o los flujos de la interfaz de usuario, colóquelos en una nueva página flexible. Cree un conjunto de permisos que se lo otorgue a su subconjunto de usuarios para el experimento.

Philippe, ¿puede compartir su estrategia de bifurcación de Git recomendada en tres minutos o menos? Vamos.

Felipe:
Esta es una pregunta difícil porque hay diferentes opciones dependiendo de las formas y dependencias del proyecto.

Un buen enfoque es tener una estrategia de múltiples capas:

  • En la parte inferior está la rama principal que contiene el código que se implementa actualmente en producción.
  • El nivel anterior es una rama UAT (Prueba de aceptación del usuario) que coincide con la implementación en un espacio aislado parcial o completo.
  • Los niveles más altos son ramas de funciones implementadas en sandboxes más pequeños y organizaciones temporales. A medida que sus funciones maduren, fusionará su código hasta el punto en que llegue a la rama de producción.

Además de esto, una cosa importante que hacemos en las aplicaciones de muestra es que separamos la rama de versión actual de Salesforce y la rama de versión preliminar. Ejecutamos diferentes trabajos de CI en estas dos ramas para validar que la nueva versión no afectará nuestro proyecto.
Esa es la mejor introducción a las estrategias de ramificación de Git que puedo hacer en tres minutos.

Alba, ¿dónde puede un equipo DevOps aprender más sobre los procesos de CI/CD?

Alba:
Aquí hay algunos recursos excelentes para comenzar:

  • Publicaciones de blog
  • Inicio del sendero
  • Vídeos
  • Instrumentos

¡Se acerca nuestro próximo AMA!

Únase a nosotros para nuestro próximo AMA el 25 de mayo de 2022 cuando el principal desarrollador defensor Julián Duque presente Ask Me Anything with Salesforce Developers | ¡ Herramientas para desarrolladores en nuestro canal de YouTube para desarrolladores de Salesforce !

Sobre el Autor

Sarah Welker es analista sénior de marketing en el equipo de relaciones con desarrolladores de Salesforce y se enfoca en contenido digital y eventos para desarrolladores. Es una gran fanática de los deportes, el aire libre y sus hijos. Puedes seguirla en Twitter @sarahwelker47.

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2022/05/ask-me-anything-with-salesforce-developers-continuous-integration.html

Entradas recomendadas