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

[TECH] Merge automatique grâce aux Github Actions #1456

Merged
merged 1 commit into from
Jul 7, 2020

Conversation

bpetetot
Copy link
Contributor

@bpetetot bpetetot commented May 27, 2020

🦄 Problème

Le processus de merge des PRs est assez fastidieux actuellement.
Quand on souhaite merger une PR, on doit :

  • Prévenir les autres dev que l'on souhaite merger une PR
  • Rebase la PR avec la branche dev
  • Attendre que le workflow de CI soit ok
  • Prier pour que personne n'ai mergé entre temps
  • Faire le merge de la PR et changer le titre de merge par défaut avec celui de la PR

🤖 Solution

Automatiser ce processus grâce aux Github Actions.
Nous utilisons un github action qui répond exactement à nos besoins :
https://github.com/pascalgn/automerge-action

Elle permet de déclencher un processus de merge automatique sur le PR ayant été labellisées ":rocket: Ready to merge". Quand la PR a ce label, l'action va:

  • Checkout la branche
  • Vérifier que les checks obligatoires sont passés et ok
  • Vérifier que la PR respecte les conditions d'approbation
  • Rebaser la PR avec la branche cible (dev)
    • Si KO => un check d'erreur apparait dans la PR (car conflit au rebase)
    • Si OK => merge la branche dans la branche cible (dev) et change le titre du commit de merge avec le nom de la PR, et enfin ferme la PR

🌈 Remarques

Conditions à respecter pour que la PR soit merge :

  • the required number of review approvals has been given (if enabled in the branch protection rules) and
  • the required checks have passed (if enabled in the branch protection rules) and
  • the pull request is up to date (if enabled in the branch protection rules)

💯 Pour tester

Vous pouvez tester sur ce repo de test

  1. Créer une PR
  2. Mettre le label ":rocket: Ready to merge"
  3. Faire approuver la PR

@pix-service
Copy link
Contributor

@bpetetot bpetetot force-pushed the tech-add-automatic-merge branch 3 times, most recently from 5ac5d2f to 8a6f34a Compare May 27, 2020 14:53
@bpetetot bpetetot force-pushed the tech-add-automatic-merge branch 2 times, most recently from 6c8e924 to 818ffb2 Compare May 27, 2020 15:26
@jbuget
Copy link
Contributor

jbuget commented May 28, 2020

Qu'est-ce qui se passe si la branche de la PR n'a pas démarré sur dev mais sur une autre branche (ex : la branche de la PR #1434 était initialement basée sur la branche de la PR #1433) ?

@jbuget
Copy link
Contributor

jbuget commented May 28, 2020

Comment fait-on pour relancer un auto-merge après qu'un premier auto-merge a échoué (pour cause de conflits de merge par exemple) ?

@MelanieMEB
Copy link
Member

L'auto-rebase en cas de décalage entre dev et la branche est pratique, mais c'est un système que nous n'avons jamais mis en place actuellement pour éviter des rebase auto qui ne correspondent pas à ce que l'on souhaite.
Je serais pour laisser l'auto-merge quand la branche est à jour avec dev, mais continuer de laisser les dev rebase eux mêmes.

@jonathanperret
Copy link
Contributor

L'auto-rebase en cas de décalage entre dev et la branche est pratique, mais c'est un système que nous n'avons jamais mis en place actuellement pour éviter des rebase auto qui ne correspondent pas à ce que l'on souhaite.

Pour que je comprenne, est-ce que tu aurais stp un exemple de rebase automatique qui ne correspondrait pas à ce que l'on souhaite ?

@bpetetot
Copy link
Contributor Author

bpetetot commented Jul 7, 2020

@jbuget

Qu'est-ce qui se passe si la branche de la PR n'a pas démarré sur dev mais sur une autre branche (ex : la branche de la PR #1434 était initialement basée sur la branche de la PR #1433) ?

Si on applique le label "Ready to merge" alors la branche sur cette PR alors la branche #1434 sur rebase sur la "Base branch" qui est #1433 et ensuite elle sera mergée sur cette dernière.

Comment fait-on pour relancer un auto-merge après qu'un premier auto-merge a échoué (pour cause de conflits de merge par exemple) ?

Il faut rebase en local, résoudre les conflits et push à nouveau sur la branche. (comme dans le process actuel) et supprimer puis remettre le label.

@MelanieMEB @jonathanperret

L'auto-rebase en cas de décalage entre dev et la branche est pratique, mais c'est un système que nous n'avons jamais mis en place actuellement pour éviter des rebase auto qui ne correspondent pas à ce que l'on souhaite.
Je serais pour laisser l'auto-merge quand la branche est à jour avec dev, mais continuer de laisser les dev rebase eux mêmes.

Je ne pense pas qu'on puisse avoir des soucis particulier avec l'auto-rebase car :

  • il sera déclenché uniquement quand le branche aura le label "Ready to merge"
  • il échouera s'il y a un conflit au rebase (il faudra alors le résoudre manuellement comme avant)

Je suis en train d'approfondir certains cas particulier pour voir si ça pourrait poser problème dans notre process actuel.

@bpetetot bpetetot force-pushed the tech-add-automatic-merge branch 2 times, most recently from 013e231 to 4ab9ec5 Compare July 7, 2020 11:51
@bpetetot bpetetot force-pushed the tech-add-automatic-merge branch 2 times, most recently from e1e0e6c to 028c788 Compare July 7, 2020 12:50
@bpetetot bpetetot force-pushed the tech-add-automatic-merge branch from 028c788 to 635587e Compare July 7, 2020 13:10
@bpetetot bpetetot added team-captains This is your captain speaking Tech Review OK and removed Development in progress labels Jul 7, 2020
@bpetetot bpetetot merged commit 411a692 into dev Jul 7, 2020
@bpetetot bpetetot deleted the tech-add-automatic-merge branch July 7, 2020 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
team-captains This is your captain speaking Tech Review OK
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants