mirror of
https://github.com/odoo/runbot.git
synced 2025-03-27 05:15:45 +07:00
[IMP] runbot_merge: delete repos being created in remote tests
In remote tests, if the deletion of a test repository fails (because gh glitch) or the repo creation succeeded but reported a failure (for some reason) the entire run is hosed because every test trying to create a similarly named repository will explode. Alter repomaker to just try to delete the repo, unless --no-delete mode in which case just skip any further test trying to use the same repository (not deleting the repo is the entire point of --no-delete, as its purpose is the ability to do post-mortem debugging on repository state). closes #99
This commit is contained in:
parent
79b03a6995
commit
55ece42d8f
@ -245,6 +245,17 @@ def make_repo(request, config, project, github, tunnel, users, owner):
|
|||||||
repos = []
|
repos = []
|
||||||
def repomaker(name):
|
def repomaker(name):
|
||||||
fullname = '{}/{}'.format(owner, name)
|
fullname = '{}/{}'.format(owner, name)
|
||||||
|
repo_url = 'https://api.github.com/repos/{}'.format(fullname)
|
||||||
|
if request.config.getoption('--no-delete'):
|
||||||
|
if github.head(repo_url).ok:
|
||||||
|
pytest.skip("Repository {} already exists".format(fullname))
|
||||||
|
else:
|
||||||
|
# just try to delete the repo, we don't really care
|
||||||
|
if github.delete(repo_url).ok:
|
||||||
|
# if we did delete a repo, wait a bit as gh might need to
|
||||||
|
# propagate the thing?
|
||||||
|
time.sleep(30)
|
||||||
|
|
||||||
# create repo
|
# create repo
|
||||||
r = github.post(endpoint, json={
|
r = github.post(endpoint, json={
|
||||||
'name': name,
|
'name': name,
|
||||||
@ -260,12 +271,12 @@ def make_repo(request, config, project, github, tunnel, users, owner):
|
|||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
repos.append(fullname)
|
repos.append(fullname)
|
||||||
# unwatch repo
|
# unwatch repo
|
||||||
github.put('https://api.github.com/repos/{}/subscription'.format(fullname), json={
|
github.put('{}/subscription'.format(repo_url), json={
|
||||||
'subscribed': False,
|
'subscribed': False,
|
||||||
'ignored': True,
|
'ignored': True,
|
||||||
})
|
})
|
||||||
# create webhook
|
# create webhook
|
||||||
github.post('https://api.github.com/repos/{}/hooks'.format(fullname), json={
|
github.post('{}/hooks'.format(repo_url), json={
|
||||||
'name': 'web',
|
'name': 'web',
|
||||||
'config': {
|
'config': {
|
||||||
'url': '{}/runbot_merge/hooks'.format(tunnel),
|
'url': '{}/runbot_merge/hooks'.format(tunnel),
|
||||||
|
Loading…
Reference in New Issue
Block a user