aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/main.yml14
-rw-r--r--python/servo/devenv_commands.py38
-rw-r--r--tests/wpt/servowpt.py2
3 files changed, 50 insertions, 4 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 97c8ff57fe7..9e15e465edc 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -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')
diff --git a/python/servo/devenv_commands.py b/python/servo/devenv_commands.py
index bd4ada00ea7..db44ad2121c 100644
--- a/python/servo/devenv_commands.py
+++ b/python/servo/devenv_commands.py
@@ -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
diff --git a/tests/wpt/servowpt.py b/tests/wpt/servowpt.py
index 477e00eb168..7766d19ff88 100644
--- a/tests/wpt/servowpt.py
+++ b/tests/wpt/servowpt.py
@@ -227,7 +227,7 @@ class TrackerDashboardFilter():
self.headers = {
"Content-Type": "application/json"
}
- if TRACKER_DASHBOARD_SECRET_ENV_VAR in os.environ:
+ if TRACKER_DASHBOARD_SECRET_ENV_VAR in os.environ and os.environ[TRACKER_DASHBOARD_SECRET_ENV_VAR]:
self.url = f"{base_url}/dashboard/attempts"
secret = os.environ[TRACKER_DASHBOARD_SECRET_ENV_VAR]
self.headers["Authorization"] = f"Bearer {secret}"