prefapp / firestarter-workflows

Repository with all firestarter workflows
0 stars 0 forks source link

[state-repo] Create a javascript action to render artifacts in the `deployment` branch #164

Open jalvarezit opened 3 weeks ago

jalvarezit commented 3 weeks ago

Descripción

Originalmente la action estaba implementada en bash con cierta parte de la lógica escrita en python utilizando ficheros separados. Se creo un único action reusable, sin embargo esto está teniendo ciertos inconvenientes a la hora de desarrollar nuevas características.

Por ello parte de la lógica debería formar parte de una action en javascript, concretamente la parte referente a helm.

La action debería hacer lo siguiente:

  1. Hydrate helm values
  2. For each affected application deployment it should run helmfile template.
  3. Split the rendered artifacts according to the deployment coordinates:
    <cluster>/<tenant>/<application>/<env>/<kind>_<metadata.name>.yml
  4. Create as many pull request as deployments, to the deployment branch, with the rendered artifacts
  5. Create a comment in the original pull request, with the references to the deployment pull requests
  6. Automatically merge those deployment pull request for those deployments that are configured with AUTO_MERGE

Inicialmente se había ideado realizar solamente el paso 4 pero viendo que también es necesario soportar sys-apps teniendo que actualizar también el bash del paso 2 es una mejor idea desarrollarlo con javascript permitiendo principalmente el uso de tests y siguiendo las buenas prácticas.

Requisitos para el uso de la action

La action tendrá como dependencia que esten instalados previamente los siguientes binarios:

Debido a que no existe una manera de ejecutar helmfile desde javascript porque no existe un paquete de npm para ello se utilizará con child_process, al igual con kubectl a menos que sea posible el uso del cliente de node para aplicar un dry run de un manifest desde código.

Además deberá comprobar que esto sea así en el arranque de la misma

También deberán realizarse los login en los registries de helm pertinenets previamente al uso de la action

Ver https://github.com/prefapp/firestarter-workflows/issues/125#issuecomment-2465539727

jalvarezit commented 3 weeks ago

related to #125

alambike commented 2 weeks ago
/apps
  /cluster
    /tenant
      /application
        /env

Needed validations:

Original PR -> main

N PRs -> deployment, 1 for deployment, write in the original PR