diff --git a/spug_api/apps/deploy/helper.py b/spug_api/apps/deploy/helper.py index 75977d4..183244d 100644 --- a/spug_api/apps/deploy/helper.py +++ b/spug_api/apps/deploy/helper.py @@ -20,6 +20,7 @@ class Helper: self.rds = rds self.key = key self.rds.delete(self.key) + self.callback = [] @classmethod def _make_dd_notify(cls, url, action, req, version, host_str): @@ -201,6 +202,9 @@ class Helper: else: raise NotImplementedError + def add_callback(self, func): + self.callback.append(func) + def parse_filter_rule(self, data: str, sep='\n'): data, files = data.strip(), [] if data: @@ -230,6 +234,9 @@ class Helper: # save logs for two weeks self.rds.expire(self.key, 14 * 24 * 60 * 60) self.rds.close() + # callback + for func in self.callback: + func() def local(self, command, env=None): if env: diff --git a/spug_api/apps/deploy/utils.py b/spug_api/apps/deploy/utils.py index 2a7cefa..e3afca6 100644 --- a/spug_api/apps/deploy/utils.py +++ b/spug_api/apps/deploy/utils.py @@ -11,6 +11,7 @@ from apps.repository.models import Repository from apps.repository.utils import dispatch as build_repository from apps.deploy.helper import Helper, SpugError from concurrent import futures +from functools import partial import json import uuid import os @@ -128,7 +129,6 @@ def _ext2_deploy(req, helper, env): step += 1 helper.send_step('local', 100, '') - tmp_transfer_file = None for action in host_actions: if action.get('type') == 'transfer': if action.get('src_mode') == '1': @@ -157,7 +157,7 @@ def _ext2_deploy(req, helper, env): tar_gz_file = f'{req.spug_version}.tar.gz' helper.local(f'cd {sp_dir} && tar -zcf {tar_gz_file} {exclude} {contain}') helper.send_info('local', f'{human_time()} \033[32m完成√\033[0m\r\n') - tmp_transfer_file = os.path.join(sp_dir, tar_gz_file) + helper.add_callback(partial(os.remove, os.path.join(sp_dir, tar_gz_file))) break if host_actions: if req.deploy.is_parallel: @@ -175,8 +175,6 @@ def _ext2_deploy(req, helper, env): latest_exception = exception if not isinstance(exception, SpugError): helper.send_error(t.h_id, f'Exception: {exception}', False) - if tmp_transfer_file: - os.remove(tmp_transfer_file) if latest_exception: raise latest_exception else: