autoforce v0.1.29
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
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
Github Services
- Github: Listo
- Gitlab: 20%
- Bitbucket: 0%
Project Services
- Github: Listo
- Gitlab: 0%
- Jira: 0%
Documentation Services
- Object: 90%
- Classes: 80%
- LWC: 10%
IA
- Code creation: 0%
- Test classes: 0%
- Commit Messages: 0%
- Code Reviewer: 0%
- Documentation: 0%
Repositorio de Ejemplo
En el siguiente repositorio 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 <> <>
- subtask <> <>
- new <>
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
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago