mach try & partitioned try jobs

This commit is contained in:
sagudev 2023-02-27 08:32:30 +01:00
parent 393902fdc1
commit 332eeb3bbe
2 changed files with 49 additions and 3 deletions

View file

@ -35,6 +35,7 @@ jobs:
});
build-win:
if: contains(fromJSON('["auto", "try", "try-windows"]'), github.ref_name)
name: Build (Windows)
runs-on: windows-2019
needs: ["decision"]
@ -60,6 +61,7 @@ jobs:
run: python mach smoketest --angle
build-mac:
if: contains(fromJSON('["auto", "try", "try-mac"]'), github.ref_name)
name: Build (macOS)
runs-on: macos-12
needs: ["decision"]
@ -157,6 +159,7 @@ jobs:
# filtered-wpt-summary.${{ matrix.chunk_id }}.log
build-linux:
if: contains(fromJSON('["auto", "try", "try-linux", "try-wpt"]'), github.ref_name)
name: Build (Linux)
runs-on: ubuntu-20.04
needs: ["decision"]
@ -183,6 +186,7 @@ jobs:
path: target.tar.gz
linux-wpt:
if: contains(fromJSON('["auto", "try", "try-wpt"]'), github.ref_name)
name: Linux WPT Tests
runs-on: ubuntu-20.04
needs: ["build-linux"]
@ -241,7 +245,7 @@ jobs:
report_test_results:
name: Reporting test results
runs-on: ubuntu-latest
if: always()
if: "!cancelled() && success('build-linux') && contains(fromJSON('[\"auto\", \"try\", \"try-wpt\"]'), github.ref_name)"
needs:
- "linux-wpt"
steps:
@ -269,16 +273,20 @@ jobs:
build_result:
name: homu build finished
runs-on: ubuntu-latest
if: always()
# needs all build to detect cancellation
needs:
- "decision"
- "build-win"
- "build-mac"
- "build-linux"
- "linux-wpt"
# - "mac-wpt"
steps:
- name: Mark the job as successful
run: exit 0
if: success()
if: "!contains(join(needs.*.result, ','), 'failure') && !contains(join(needs.*.result, ','), 'cancelled')"
- name: Mark the job as unsuccessful
run: exit 1
if: "!success()"
if: contains(join(needs.*.result, ','), 'failure') || contains(join(needs.*.result, ','), 'cancelled')

View file

@ -349,3 +349,41 @@ class MachCommands(CommandBase):
"--verbose",
], env=env)
return p.wait()
@Command('try',
description='Runs try jobs by force pushing to personal fork try branches',
category='devenv')
@CommandArgument(
'jobs', default=["try"], nargs='...',
help="Name(s) of job(s) (ex: try, linux, mac, windows, wpt)")
def try_jobs(self, jobs):
branches = []
# we validate branches because force pushing is destructive
VALID_TRY_BRACHES = ["try", "try-linux", "try-mac", "try-windows", "try-wpt"]
for job in jobs:
# branches must start with try-
if "try" not in job:
job = "try-" + job
if job not in VALID_TRY_BRACHES:
print(job + " job doesn't exist")
return -1
branches.append(job)
remote = "origin"
if "servo/servo" in subprocess.check_output(["git", "config", "--get", "remote.origin.url"]).decode():
# if we have servo/servo for origin check try remote
try:
if "servo/servo" in subprocess.check_output(["git", "config", "--get", "remote.try.url"]).decode():
# User has servo/servo for try remote
print("You should not use servo/servo for try remote!")
return -1
else:
remote = "try"
except subprocess.CalledProcessError:
print("It looks like you are patching in upstream servo.")
print("Set try remote to your personal fork with `git remote add try https://github.com/user/servo`")
return -1
for b in branches:
res = call(["git", "push", remote, "--force", f"HEAD:{b}"], env=self.build_env())
if res != 0:
return res
return 0