Une explication from the bottom-up
Julien LENORMAND - Kaizen Solutions
Qui en a déjà entendu parler ?
Qui connaît ?
Qui pourrait me l’expliquer ?
sur le blog Kaizen Solutions :
une introduction à l’architecture héxagonale par Xavier Bouvard
Quizz sur les pré-requis :
du jargon …
qui est dèv ici ? on veut du code !
partir d’un problème concret et réel
principalement du code, qu’on va commenter ensemble
pas/peu de concept avant la fin (wrap-up)
Suivre l’avancement des PRs et de leurs relectures par plusieurs personnes au sein d’un projet micro-services.
Je bricole un petit proto en Python :
v1
import stashy # lib pour BitBucket
login = "Julien"
token = "AbCdEf01#"
server_url = "https://bitbucket.internal.corp:1234"
project_name = "AwesomeProject" # contient plusieurs repo
stash = stashy.connect(server_url, login, token)
for repo_data in stash.projects[project_name].repos.list():
repo_slug = repo_data["slug"] # identifiant
print("Repo " + repo_slug)
for pr_data in (stash.projects[project_name]
.repos[repo_slug].pull_requests.list()):
title = pr_data["title"]
author_name = pr_data["author"]["displayName"]
print(f" - PR {title!r} de {author_name!s}")
for reviewer_data in pr_data["reviewers"]:
reviewer_name = reviewer_data["user"]["displayName"]
has_approved = bool(reviewer_data["approved"])
print(f" - {'OK' if has_approved else ' '} {reviewer_name}")
Repo AlpesDHuez
- PR "add foo to bar" de Elena
- OK Gabin
- Julien
- PR "remove qux from tez" de Julien
- OK Gabin
Repo Bonneval
Repo Chamrousse
- PR "increase pol to 4000" de Julien
- Elena
- Gabin
Repo GrandBornand
Repo Meribel
- PR "doc for lud" de Elena
- OK Agathe
On peut faire plus clair : indiquer ce qui est actionnable !
v2
my_id = "123456"
pr_author_id = pull_request_data["author"]["id"]
i_am_reviewer = my_id in (reviewer_data["user"]["id"]
for reviewer_data in pull_request_data["reviewers"])
if my_id == pr_author_id:
print(f"Repo {repo_slug!s} PR {pr_title!r}")
# afficher la liste des gens qui n'ont PAS approuvé, ou alors "à merger"
reviewers_data_not_approved = tuple(reviewer_data
for reviewer_data in pull_request_data["reviewers"]
if not reviewer_data["approved"])
if len(reviewers_data_not_approved) == 0:
print(" -> à merger")
else:
print("\n".join(" -> relancer " + reviewer_data["user"]["displayName"]
for reviewer_data in reviewers_data_not_approved))
elif i_am_reviewer:
print(f"Repo {repo_slug!s} PR {pr_title!r} de {pr_author_display_name!s}")
print(" -> à relire")
Repo AlpesDHuez PR "add foo to bar" de Elena
-> à relire
Repo AlpesDHuez PR "remove qux from tez"
-> à merger
Repo Chamrousse PR "increase pol to 4000"
-> relancer Elena
-> relancer Gabin
LGTM
Je rajoute :