UNPKG

autoforce

Version:

Developer Automation tool for Github / Gitlab and Salesforce projects.

140 lines (91 loc) 4.99 kB
# Autoforce El proyecto esta todavia en Beta todavia, pero la idea es que pueda estar productivo para algunos proyectos pronto. ## Objetivo Hace un tiempo estabamos armando un repo para hacer practicas sobre Salesforce. Y empezamos a crear unos scripts para crear una instancia y subir el codigo. La idea fue evolucionando, y los scripts se fueron complejizando. Tambien surgieron limitaciones, si algo fallaba se quedaba por la mitad, los que tenian windows algunas cosas no funcionaban, y termine moviendo la idea a una herramienta. El objetivo termino siendo facilitar y automatizar las tareas comunes que realizamos los desarrolladores. Si bien empece con Salesforce, la idea es generalizarla para que soporte distintos modelos, de hecho uno es para este mismo proyecto :) ## Orden en un Repositorio Soy muy ansioso, y muchas veces queria hacer varios cambios juntos, el famoso ya que estoy aca tocando, o se me ocurrio algo. Pero despues es dificil de seguir, o se hacen mas largas las code reviews, etc. Asi que el primer objetivo fue organizar el proyecto, si tengo una idea la guardo enseguida (new). Y si quiero arrancar algo, puedo empezar por ver las proximas stories (list). ## Tareas repetitivas El segundo objetivo fue que pueda arrancar el desarrollo y arme el entorno, cree una branch y suba datos de prueba (start). Y por otro lado, cuando termine ese desarrollo,que baje los cambios en la scratch, documente, y valide la calidad del codigo(finish). Basicamente las tareas comunes que identificamos fueron: 1. start 2. finish 3. stop 4. cancel En cada una de ellas buscamos automatizar o integrar las siguientes gestiones: - Branching Strategy en Git (Github o Gitlab) - Armado de ambiente de desarrollo (Salesforce) - Gestion de proyecto (Github projects, Gitlab projects o Jira). - Documentacion (Github pages o GitLab pages. Version mejorada con docusaurus) - Calidad de codigo (PMD) - Uso de IA ( OpenAI, ) ## Tipos de Modelos Al principio habia pensando en una lista de modelos, ejemplo paquetes de appexchange y otro para proyectos sobre salesforce. Pero al final vi que los modelos son combinaciones de acuerdo a las siguientes variables: - Branching strategy: En este sentido, el start y finish van a hacer task distintas, si quiero un gitflow o main - Tipo de desarrollo: Si estoy desarrollando paquetes o usango scratch en el start voy a buscar que me arme un ambiente nuevo - Tipo de Projecto: Si el projecto maneja milestones como releases, cambian o se agregan mas preguntas en algunos steps - Modelo de documentacion: La documentacion estaria muy relacionada con el tipo de desarrollo, pero quedo como una variable aparte por orden. ## Roadmap Status 1. Implementaciones - "Procesos de Negocio en Clientes de Salesforce": 70% Salesforce: Scratchs con Tracking y deploys usando sf cli Documentacion: Markdowns de Procesos con Github pages Gestion de Proyecto: Project con milestones Branching Strategy: Github workflow - "Desarrollo de Producto": 30% Salesforce: Scratchs con Tracking y deploys con second generation package Documentacion: Markdowns de Procesos con Github pages Gestion de Proyecto: Project con milestones Branching Strategy: Gitflow workflow 2. Github Services - Github: Listo - Gitlab: 20% - Bitbucket: 0% 3. Project Services - Github: Listo - Gitlab: 0% - Jira: 0% 4. Documentation Services - Object: 90% - Classes: 80% - LWC: 10% 5. IA - Code creation: 0% - Test classes: 0% - Commit Messages: 0% - Code Reviewer: 0% - Documentation: 0% ## Repositorio de Ejemplo En el siguiente [repositorio](https://github.com/sebastianclaros/autoforce-test) tomamos como ejemplo un proyecto de Salesforce. En la carpeta scripts/test hay una serie de comandos (all.sh), que hace de forma autamtizada lo siguiente: * Hace un upgrade de autoforce * Crea un Milestone representando un release nuevo * Crea 3 issues dentro de ese Milestone ## Uso Una vez instalado se puede crear scripts a medida o bien ejecutar ``` npx autoforce <<comando>> ``` Los comandos son * help * version * config * task <<taskname>> <<opciones>> * subtask <<subtaskname>> <<opciones>> * new <<template>> Si no se ingresa ningun comando asume que es task Y si no se ingresan parametros, tiene un modo asistido que los va a ir preguntando. Por ejemplo para el comando new, dara una lista de opciones de acuerdo a los templates. Hay un proyecto de test para analizar y probar la herramienta. https://github.com/sebastianclaros/autoforce-test La guia del readme sirve de ejemplo. ## Testear una version en forma local Para hacer un testeo local se puede generar una version nueva. Esto pide un nro de version arma el package en root como autoforce-latest.tgz ``` yarn pack ``` Despues en el repositorio local autoforce-test, hay un script que lo instala. ``` ./scripts/test/upgrade-local.sh ```