mirror of https://github.com/openspug/spug
				
				
				
			U 优化自定义发布数据传输
							parent
							
								
									e80249c311
								
							
						
					
					
						commit
						ba4f561aa6
					
				| 
						 | 
				
			
			@ -22,7 +22,7 @@ def auto_deploy(request, deploy_id, kind):
 | 
			
		|||
        if kind == 'branch' and _kind == 'heads':
 | 
			
		||||
            commit_id = body['after']
 | 
			
		||||
            if commit_id != '0000000000000000000000000000000000000000' and ref == request.GET.get('name'):
 | 
			
		||||
                message = _parse_message(body, repo)[:20]
 | 
			
		||||
                message = _parse_message(body, repo)
 | 
			
		||||
                Thread(target=_dispatch, args=(deploy_id, ref, commit_id, message)).start()
 | 
			
		||||
                return HttpResponse(status=202)
 | 
			
		||||
        elif kind == 'tag' and _kind == 'tags':
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ def _parse_message(body, repo):
 | 
			
		|||
            message = body['commits'][0].get('message', '')
 | 
			
		||||
    else:
 | 
			
		||||
        raise ValueError(f'repo {repo} is not supported')
 | 
			
		||||
    return message
 | 
			
		||||
    return message[:20].strip()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _dispatch(deploy_id, ref, commit_id=None, message=None):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -131,7 +131,10 @@ def _ext2_deploy(req, helper, env):
 | 
			
		|||
        if action.get('type') == 'transfer':
 | 
			
		||||
            action['src'] = render_str(action.get('src', '').strip().rstrip('/'), env)
 | 
			
		||||
            action['dst'] = render_str(action['dst'].strip().rstrip('/'), env)
 | 
			
		||||
            if action.get('src_mode') == '1':
 | 
			
		||||
            if action.get('src_mode') == '1':   # upload when publish
 | 
			
		||||
                extra = json.loads(req.extra)
 | 
			
		||||
                if 'name' in extra:
 | 
			
		||||
                    action['name'] = extra['name']
 | 
			
		||||
                break
 | 
			
		||||
            helper.send_step('local', step, f'{human_time()} 检测到来源为本地路径的数据传输动作,执行打包...   \r\n')
 | 
			
		||||
            action['src'] = action['src'].rstrip('/ ')
 | 
			
		||||
| 
						 | 
				
			
			@ -263,7 +266,14 @@ def _deploy_ext2_host(helper, h_id, actions, env, spug_version):
 | 
			
		|||
            if action.get('type') == 'transfer':
 | 
			
		||||
                if action.get('src_mode') == '1':
 | 
			
		||||
                    try:
 | 
			
		||||
                        ssh.put_file(os.path.join(REPOS_DIR, env.SPUG_DEPLOY_ID, spug_version), action['dst'])
 | 
			
		||||
                        dst = action['dst']
 | 
			
		||||
                        command = f'[ -e {dst} ] || mkdir -p $(dirname {dst}); [ -d {dst} ]'
 | 
			
		||||
                        code, _ = ssh.exec_command_raw(command)
 | 
			
		||||
                        if code == 0:    # is dir
 | 
			
		||||
                            if not action.get('name'):
 | 
			
		||||
                                raise RuntimeError('internal error 1002')
 | 
			
		||||
                            dst = dst.rstrip('/') + '/' + action['name']
 | 
			
		||||
                        ssh.put_file(os.path.join(REPOS_DIR, env.SPUG_DEPLOY_ID, spug_version), dst)
 | 
			
		||||
                    except Exception as e:
 | 
			
		||||
                        helper.send_error(host.id, f'Exception: {e}')
 | 
			
		||||
                    helper.send_info(host.id, 'transfer completed\r\n')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue