def build(self, src_name, src_dir, env=None): # copy files into shared volume shared_dir = os.path.join(self.settings['build-dir'], src_name) host.execute('mkdir -p %s' % shared_dir) src_dir = os.path.abspath(src_dir) parent_dir, src = os.path.dirname(src_dir), os.path.basename(src_dir) args = [ "rsync --delete-excluded --recursive", "--include='%s'" % src, "--include='%s/*'" % src, "--include='%s/**/*'" % src, "--include='%s_*.orig.*'" % src_name, "--include='%s.orig.*'" % src_name, "--exclude='*'", "%s/" % parent_dir, "%s/" % shared_dir, ] host.execute(' '.join(args)) # build packages client = connect() work_dir = os.path.join('/meuh/build', src_name, src) env = ctx.inline(env or {}) for cmd in self.settings['publish-commands']: formatted = ['/bin/sh', '-c', '%s' % cmd] logger.info('execute %s', cmd) for res in client.execute(self.container_id, cmd=formatted, stream=True): print(res, end='') for cmd in self.settings['build-commands']: formatted = ['/bin/sh', '-c', 'cd %s && %s %s' % (work_dir, env, cmd)] logger.info('execute %s', 'cd %s && %s %s' % (work_dir, env, cmd)) for res in client.execute(self.container_id, cmd=formatted, stream=True): print(res, end='') # publish results args = [ "rsync --recursive", "--include='*.deb'", "--include='*.udeb'", "--include='*.dsc'", "--include='*.changes'", "--exclude='*'", "%s/" % os.path.join('/meuh/build', src_name), '/meuh/publish' ] self.execute(' '.join(args)) logger.info('artifacts are published into /meuh/publish')
def build2(self, src, env=None): client = connect() src_dir = os.path.join('/meuh/build', src) env = ctx.inline(env or {}) for cmd in self.settings['publish-commands']: formatted = ['/bin/sh', '-c', '%s' % cmd] logger.info('execute %s', cmd) for res in client.execute(self.container_id, cmd=formatted, stream=True): print(res, end='') for cmd in self.settings['build-commands']: formatted = ['/bin/sh', '-c', 'cd %s && %s %s' % (src_dir, env, cmd)] logger.info('execute %s', 'cd %s && %s %s' % (src_dir, env, cmd)) for res in client.execute(self.container_id, cmd=formatted, stream=True): print(res, end='')