Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ci) : Deploy to staging through a PR label #299

Merged
merged 2 commits into from
Oct 8, 2024
Merged

Conversation

vperron
Copy link
Contributor

@vperron vperron commented Sep 19, 2024

Il est dommage d'entrer en compétition avec les autres dev à chaque push sur une PR.

Avec ce système, on peut choisir quand déployer, surtout quand certaines PR ne méritent pas forcément un deploy, et se mettre d'accord avec les dev pour ce faire.

De plus, passer en draft n'est pas forcément le meilleur système car on confond le principe d'un brouillon (à ne pas relire) et le fait de déployer ou non.

@vperron vperron requested a review from vmttn as a code owner September 19, 2024 07:37
@vperron vperron self-assigned this Sep 19, 2024
Copy link
Contributor

@vmttn vmttn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bonne idée d'utiliser les labels!

par contre, en l'état là ça bloquerait les déploiements en prod car le workflow build_deploy est utlisé pour le staging et la prod

  1. déplacer le if sur le job deploy
  2. impossible prendre en compte la matrix dans le if au niveau d'un job (cf). Donc soit on duplique le job deploy en deploy_staging et deploy_prod, soit on met le if au niveau des steps (mais on serait forcé de dupliquer le if sur chaque step car un if sur un step ne skip que la step 🤪 )

@vperron
Copy link
Contributor Author

vperron commented Sep 19, 2024

Je suis moins fan, avec ma proposition tu peux décider que une PR a le "bâton" de déploiement et ne plus t'en occuper, par contre à chaque push ça rédéploiera ta PR comme attendu.
Avec ta solution on doit retourner dans le clickodrome pour chaque push.

@vmttn
Copy link
Contributor

vmttn commented Sep 19, 2024

désolé j'ai édité entre temps mon commentaire ;)

@vperron
Copy link
Contributor Author

vperron commented Sep 19, 2024

OK vu seconde proposition.
Je pense que ce ne serait pas une mauvaise idée de dupliquer le job, car je suis toujours un peu en stress de voir ce job de deploy_prod tel une épée de Damoclès sur les PRs.

Ca serait limite plus clair d'avoir du coup le deploy_prod séparé (quitte à faire un include YAML pour etre DRY) mais qui ne se trigger que lorsque la PR est mergée, et le deploy_staging qui se fait sur label (ou via autorisation explicite, mais comme dit plus haut, je suis moins fan)

@vmttn
Copy link
Contributor

vmttn commented Sep 19, 2024

ok pour dupliquer le job donc (dry ou non) et pour utiliser un label 👍

pour la prod, est-ce qu'on n'utiliserait pas la branche (protégée) release pour ne plus avoir à review et s'aligner le fonctionnement qu'on a avec l'api (contraint par scalingo) ?

@vperron
Copy link
Contributor Author

vperron commented Sep 19, 2024

Je pense qu'aujourd'hui, avec staging de plus en plus proche de la prod et réellement utilisé en recette, on devrait pouvoir se le permettre en effet.

Ca relance un peu le sujet d'avoir une unique datawarehouse, mais j'avoue ne pas être encore certain de la marche à suivre à ce sujet. Le sujet des profils DBT permet en effet d'avoir plusieurs "cibles" mais je ne vois pas en quoi cela nous affranchit d'avoir deux clusters postgres séparés.

Il me semble que dans l'immédiat (et dans le doute) avoir deux datawarehouses, meme proches dans le fonctionnement (on pourrait activer les mêmes DAGs en staging et prod ?) me semble le plus safe. Mais je prends toute autre idée avec plaisir !

It is annoying to be competing with each other when pushing code, so I
feel like it's going to help if we decide to deploy through adding a
non-mandatory label than "all the time unless draft".

Also, drafts mean something different IMHO. They should be used as
"please do not review yet, this is a work in progress, open for
discussion".

This commit also splits the jobs in two:

- one job will be responsible of building and deploying images to
  staging
- another one will deploy to prod, the 'release' branch only.

Reusable actions have been used to ensure DRYness.
@vperron vperron merged commit 5dbe0a2 into main Oct 8, 2024
7 checks passed
@vperron vperron deleted the vperron/gh-deploy branch October 8, 2024 16:06
@vperron vperron removed the deploy-to-staging Permet d'activer le déploiement de la PR en staging. label Oct 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants