def deploy_dispatch(request, req, token): rds = get_redis_connection() try: api_token = uuid.uuid4().hex rds.setex(api_token, 60 * 60, f'{req.deploy.app_id},{req.deploy.env_id}') helper = Helper(rds, token) helper.send_step('local', 1, f'完成\r\n{human_time()} 发布准备... ') env = AttrDict( SPUG_APP_NAME=req.deploy.app.name, SPUG_APP_ID=str(req.deploy.app_id), SPUG_REQUEST_NAME=req.name, SPUG_REQUEST_ID=str(req.id), SPUG_ENV_ID=str(req.deploy.env_id), SPUG_ENV_KEY=req.deploy.env.key, SPUG_VERSION=req.version, SPUG_DEPLOY_TYPE=req.type, SPUG_API_TOKEN=api_token, ) if req.deploy.extend == '1': env.update(json.loads(req.deploy.extend_obj.custom_envs)) _ext1_deploy(req, helper, env) else: _ext2_deploy(req, helper, env) req.status = '3' except Exception as e: req.status = '-3' raise e finally: rds.expire(token, 5 * 60) rds.close() req.save() Helper.send_deploy_notify(req)
def dispatch(rep: Repository, helper=None): rep.status = '1' alone_build = helper is None if not helper: rds = get_redis_connection() rds_key = f'{settings.BUILD_KEY}:{rep.spug_version}' helper = Helper(rds, rds_key) rep.save() try: api_token = uuid.uuid4().hex helper.rds.setex(api_token, 60 * 60, f'{rep.app_id},{rep.env_id}') helper.send_info( 'local', f'\033[32m完成√\033[0m\r\n{human_time()} 构建准备... ') env = AttrDict( SPUG_APP_NAME=rep.app.name, SPUG_APP_KEY=rep.app.key, SPUG_APP_ID=str(rep.app_id), SPUG_DEPLOY_ID=str(rep.deploy_id), SPUG_BUILD_ID=str(rep.id), SPUG_ENV_ID=str(rep.env_id), SPUG_ENV_KEY=rep.env.key, SPUG_VERSION=rep.version, SPUG_API_TOKEN=api_token, SPUG_REPOS_DIR=REPOS_DIR, ) # append configs configs = compose_configs(rep.app, rep.env_id) configs_env = {f'_SPUG_{k.upper()}': v for k, v in configs.items()} env.update(configs_env) _build(rep, helper, env) rep.status = '5' except Exception as e: rep.status = '2' raise e finally: helper.local(f'cd {REPOS_DIR} && rm -rf {rep.spug_version}') close_old_connections() if alone_build: helper.clear() rep.save() return rep elif rep.status == '5': rep.save()
def dispatch(req): rds = get_redis_connection() rds_key = f'{settings.REQUEST_KEY}:{req.id}' helper = Helper(rds, rds_key) try: api_token = uuid.uuid4().hex rds.setex(api_token, 60 * 60, f'{req.deploy.app_id},{req.deploy.env_id}') env = AttrDict( SPUG_APP_NAME=req.deploy.app.name, SPUG_APP_KEY=req.deploy.app.key, SPUG_APP_ID=str(req.deploy.app_id), SPUG_REQUEST_NAME=req.name, SPUG_DEPLOY_ID=str(req.deploy.id), SPUG_REQUEST_ID=str(req.id), SPUG_ENV_ID=str(req.deploy.env_id), SPUG_ENV_KEY=req.deploy.env.key, SPUG_VERSION=req.version, SPUG_DEPLOY_TYPE=req.type, SPUG_API_TOKEN=api_token, SPUG_REPOS_DIR=REPOS_DIR, ) # append configs configs = compose_configs(req.deploy.app, req.deploy.env_id) configs_env = {f'_SPUG_{k.upper()}': v for k, v in configs.items()} env.update(configs_env) if req.deploy.extend == '1': _ext1_deploy(req, helper, env) else: _ext2_deploy(req, helper, env) req.status = '3' except Exception as e: req.status = '-3' raise e finally: close_old_connections() req.save() helper.clear() Helper.send_deploy_notify(req)