in bot/tools/restart_tasks.py [0:0]
def main():
# CLI args
parser = argparse.ArgumentParser()
parser.add_argument("--nb-tasks", type=int, default=5, help="NB of tasks to create")
parser.add_argument(
"--group", type=str, default=slugId(), help="Task group to create/update"
)
parser.add_argument(
"--dry-run",
action="store_true",
default=False,
help="List actions without triggering any new task",
)
parser.add_argument("tasks", nargs="+", help="Existing tasks to retrigger")
args = parser.parse_args()
# List existing tags & commits
print("Group", args.group)
try:
group = queue.listTaskGroup(args.group)
commits = set(
[
(
task["task"]["payload"]["env"]["REPOSITORY"],
task["task"]["payload"]["env"]["REVISION"],
)
for task in group["tasks"]
if task["status"]["state"] not in ("failed", "exception")
]
)
print(
"Found {} commits processed in task group {}".format(
len(commits), args.group
)
)
except Exception as e:
print("Invalid task group : {}".format(e))
commits = set()
# Trigger a task for each commit
triggered = 0
for repository, commit in list_commits(args.tasks):
if (repository, commit) in commits:
print("Skipping existing commit {} {}".format(repository, commit))
continue
print("Triggering {} : {}".format(repository, commit))
if args.dry_run:
print(">>> No trigger on dry run")
else:
out = trigger_task(args.group, repository, commit)
print(">>>", out["status"]["taskId"])
triggered += 1
commits.add((repository, commit))
if triggered >= args.nb_tasks:
print("Max nb tasks reached !")
break