diff options
-rw-r--r-- | NEWS | 3 | ||||
-rwxr-xr-x | worker_manager | 11 |
2 files changed, 13 insertions, 1 deletions
@@ -20,6 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. Version 0.21+git, not yet released ---------------------------------- +* Add a `where: chroot` field to pipeline actions to cause the + shell/python snippet to run in a chroot using the workspace as the + root directory. Version 0.21, released 2017-12-27 ---------------------------------- diff --git a/worker_manager b/worker_manager index 24214bd..8642036 100755 --- a/worker_manager +++ b/worker_manager @@ -295,6 +295,11 @@ class WorkerBase: params = work.get('parameters', {}) params_text = self.params64(params) argv = self.get_argv(work, params_text) + if self.where(work) == 'chroot': + logging.debug('CHROOT REQUESTED') + argv = ['sudo', 'chroot', self._workspace] + argv + else: + logging.debug('NOT IN CHROOT') logging.debug('running: %r', argv) exit_code, _, _ = cliapp.runcmd_unchecked( argv, @@ -310,6 +315,10 @@ class WorkerBase: as_base64 = base64.b64encode(as_bytes) return as_base64.decode('UTF-8') + def where(self, work): + step = work.get('step', {}) + return step.get('where') + def get_argv(self, work, params_text): raise NotImplementedError() @@ -350,7 +359,7 @@ class DebootstrapWorker(WorkerBase): class WorkspaceCleaner(WorkerBase): def get_argv(self, work, params_text): - return ['find', '.', '-delete'] + return ['sudo', 'find', '.', '-delete'] if __name__ == '__main__': |