From b7dab0fe68af921e15bc7b5c3a9f44b4ea6a0a1a Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 15 Apr 2018 18:40:13 +0300 Subject: Add: pass in build number via environment to child processes --- ick2/actionenvs.py | 5 +++++ ick2/actions.py | 8 +++++++- worker_manager | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ick2/actionenvs.py b/ick2/actionenvs.py index 099b13f..e09366b 100644 --- a/ick2/actionenvs.py +++ b/ick2/actionenvs.py @@ -103,6 +103,10 @@ class ActionEnvironment: # pragma: no cover self._systree = systree self._workspace = workspace self._reporter = reporter + self._extra_env = {} + + def set_extra_env(self, extra_env): + self._extra_env = dict(extra_env) def get_systree_directory(self): return self._systree @@ -132,6 +136,7 @@ class ActionEnvironment: # pragma: no cover 'LC_ALL': 'C', 'DEBIAN_FRONTEND': 'noninteractive', }) + env.update(self._extra_env) return env diff --git a/ick2/actions.py b/ick2/actions.py index ab23edc..9f444e0 100644 --- a/ick2/actions.py +++ b/ick2/actions.py @@ -41,6 +41,10 @@ class ActionFactory: self._reporter = reporter self._token = None self._blob_url = None + self._extra_env = {} + + def add_env_var(self, name, value): # pragma: no cover + self._extra_env[name] = value def set_token(self, token): self._token = token @@ -68,7 +72,9 @@ class ActionFactory: env_class = self._classes[env] area = self.get_workspace_area() ws = area.create_workspace(project_name) - return env_class(self._systree, ws.get_directory(), self._reporter) + env = env_class(self._systree, ws.get_directory(), self._reporter) + env.set_extra_env(self._extra_env) + return env def create_action(self, spec, project_name): env = self.create_environment(spec, project_name) diff --git a/worker_manager b/worker_manager index 1590109..cd2c884 100755 --- a/worker_manager +++ b/worker_manager @@ -198,12 +198,14 @@ class Worker: def do_work(self, work): project_name = work['project'] + build_number = work['build_number'] step = work.get('step', {}) params = work.get('parameters', {}) reporter = ick2.Reporter(self._api, work) af = ick2.ActionFactory(self._systree, self._workspace, reporter) af.set_token(self._api.get_token()) af.set_blob_url_func(self._api.get_blob_upload_url) + af.add_env_var('BUILD_NUMBER', str(build_number)) action = af.create_action(step, project_name) exit_code = action.execute(params, step) -- cgit v1.2.1