Bug 1523562 [wpt PR 15073] - Add a retry to the initial git checkout, a=testonly

Automatic update from web-platform-tests
Add a retry to the initial git checkout

--
Update docker image

--

wpt-commits: aa94ec995bdf6de55dca6dc51fc83dc0a66c31e9, 68f47dfce55536c861d4e28220de4d296a5472c7
wpt-pr: 15073
This commit is contained in:
James Graham 2019-02-01 11:40:39 +00:00
parent 5b44f47643
commit e6baccb68c
4 changed files with 66 additions and 4 deletions

View File

@ -61,7 +61,7 @@ tasks:
owner: ${event.pusher.email}
source: ${event.repository.url}
payload:
image: harjgam/web-platform-tests:0.26
image: harjgam/web-platform-tests:0.29
maxRunTime: 7200
artifacts:
public/results:
@ -136,7 +136,7 @@ tasks:
owner: ${event.pull_request.user.login}@users.noreply.github.com
source: ${event.repository.url}
payload:
image: harjgam/web-platform-tests:0.26
image: harjgam/web-platform-tests:0.29
maxRunTime: 7200
artifacts:
public/results:

View File

@ -66,9 +66,13 @@ WORKDIR /home/test
RUN sudo echo ""
RUN mkdir -p /home/test/artifacts
RUN mkdir -p /home/test/bin
ENV PATH="/home/test/bin:${PATH}"
WORKDIR /home/test/
COPY .bashrc /home/test/.bashrc
COPY start.sh /home/test/start.sh
COPY retry.py /home/test/bin/retry

View File

@ -0,0 +1,58 @@
#! /usr/bin/env python
import argparse
import subprocess
import time
import sys
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument("--delay", action="store", type=float, default=3, help="Initial delay before retry, in seconds")
parser.add_argument("--count", action="store", type=int, default=5, help="Total number of tries")
parser.add_argument("--factor", action="store", type=float, default=2, help="Exponential backoff factor")
parser.add_argument("cmd", nargs=argparse.REMAINDER)
return parser
def iter_range(n):
i = 0
while i < n:
yield i
i += 1
def main():
args = get_args().parse_args()
if not args.cmd:
print("No command supplied")
sys.exit(1)
retcode = None
for n in iter_range(args.count):
try:
print("Running %s [try %d/%d]" % (" ".join(args.cmd), (n+1), args.count))
subprocess.check_call(args.cmd)
except subprocess.CalledProcessError as e:
retcode = e.returncode
else:
print("Command succeeded")
retcode = 0
break
if args.factor == 0:
wait_time = (n+1) * args.delay
else:
wait_time = args.factor**n * args.delay
if n < args.count - 1:
print("Command failed, waiting %s seconds to retry" % wait_time)
time.sleep(wait_time)
else:
print("Command failed, out of retries")
sys.exit(retcode)
if __name__ == "__main__":
main()

View File

@ -26,13 +26,13 @@ git init
git remote add origin ${REMOTE}
# Initially we just fetch 50 commits in order to save several minutes of fetching
git fetch --quiet --depth=50 --tags origin ${REF}
retry git fetch --quiet --depth=50 --tags origin ${REF}
if [[ ! `git rev-parse --verify -q ${REVISION}` ]];
then
# But if for some reason the commit under test isn't in that range, we give in and
# fetch everything
git fetch -q --unshallow ${REMOTE}
retry git fetch -q --unshallow ${REMOTE}
git rev-parse --verify ${REVISION}
fi
git checkout -b build ${REVISION}