Bug 1624763 - Enable custom actions to be defined in a repo. r=tomprince

This is a port of https://hg.mozilla.org/ci/taskgraph/rev/a61ab06c25222 to allow
for custom actions in a project repo. Previously, registration of actions worked
but did not run when triggered.

Differential Revision: https://phabricator.services.mozilla.com/D68891

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Rob Lemley 2020-04-09 07:37:21 +00:00
parent 9f10b2a2a0
commit f49e91e5fb
2 changed files with 9 additions and 2 deletions

View File

@ -305,6 +305,7 @@ def trigger_action_callback(task_group_id, task_id, input, callback, parameters,
the action callback in testing mode, without actually creating tasks.
"""
graph_config = load_graph_config(root)
graph_config.register()
callbacks = _get_callbacks(graph_config)
cb = callbacks.get(callback, None)
if not cb:

View File

@ -138,10 +138,16 @@ class GraphConfig(object):
Add the project's taskgraph directory to the python path, and register
any extensions present.
"""
modify_path = os.path.dirname(self.root_dir)
if GraphConfig._PATH_MODIFIED:
if GraphConfig._PATH_MODIFIED == modify_path:
# Already modified path with the same root_dir.
# We currently need to do this to enable actions to call
# taskgraph_decision, e.g. relpro.
return
raise Exception("Can't register multiple directories on python path.")
GraphConfig._PATH_MODIFIED = True
sys.path.insert(0, os.path.dirname(self.root_dir))
GraphConfig._PATH_MODIFIED = modify_path
sys.path.insert(0, modify_path)
register_path = self['taskgraph'].get('register')
if register_path:
find_object(register_path)(self)