U 优化自定义发布数据清理机制

pull/410/head
vapao 2021-11-25 17:25:49 +08:00
parent fbd3255540
commit a37b736e65
2 changed files with 9 additions and 4 deletions

View File

@ -20,6 +20,7 @@ class Helper:
self.rds = rds self.rds = rds
self.key = key self.key = key
self.rds.delete(self.key) self.rds.delete(self.key)
self.callback = []
@classmethod @classmethod
def _make_dd_notify(cls, url, action, req, version, host_str): def _make_dd_notify(cls, url, action, req, version, host_str):
@ -201,6 +202,9 @@ class Helper:
else: else:
raise NotImplementedError raise NotImplementedError
def add_callback(self, func):
self.callback.append(func)
def parse_filter_rule(self, data: str, sep='\n'): def parse_filter_rule(self, data: str, sep='\n'):
data, files = data.strip(), [] data, files = data.strip(), []
if data: if data:
@ -230,6 +234,9 @@ class Helper:
# save logs for two weeks # save logs for two weeks
self.rds.expire(self.key, 14 * 24 * 60 * 60) self.rds.expire(self.key, 14 * 24 * 60 * 60)
self.rds.close() self.rds.close()
# callback
for func in self.callback:
func()
def local(self, command, env=None): def local(self, command, env=None):
if env: if env:

View File

@ -11,6 +11,7 @@ from apps.repository.models import Repository
from apps.repository.utils import dispatch as build_repository from apps.repository.utils import dispatch as build_repository
from apps.deploy.helper import Helper, SpugError from apps.deploy.helper import Helper, SpugError
from concurrent import futures from concurrent import futures
from functools import partial
import json import json
import uuid import uuid
import os import os
@ -128,7 +129,6 @@ def _ext2_deploy(req, helper, env):
step += 1 step += 1
helper.send_step('local', 100, '') helper.send_step('local', 100, '')
tmp_transfer_file = None
for action in host_actions: for action in host_actions:
if action.get('type') == 'transfer': if action.get('type') == 'transfer':
if action.get('src_mode') == '1': 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' tar_gz_file = f'{req.spug_version}.tar.gz'
helper.local(f'cd {sp_dir} && tar -zcf {tar_gz_file} {exclude} {contain}') 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') 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 break
if host_actions: if host_actions:
if req.deploy.is_parallel: if req.deploy.is_parallel:
@ -175,8 +175,6 @@ def _ext2_deploy(req, helper, env):
latest_exception = exception latest_exception = exception
if not isinstance(exception, SpugError): if not isinstance(exception, SpugError):
helper.send_error(t.h_id, f'Exception: {exception}', False) helper.send_error(t.h_id, f'Exception: {exception}', False)
if tmp_transfer_file:
os.remove(tmp_transfer_file)
if latest_exception: if latest_exception:
raise latest_exception raise latest_exception
else: else: