下面我有一个我们的业务线使用的YAML模式文件示例。我们正在使用Jenkins来运行CI/CD作业。 等级库文件格式如下所示:
azure:
method: paas
autoscaling :
enabled: true
default : 2
minimum : 2
maximum : 10
rules:
parameters :
webappName : "sample app"
pricingTier : "1"
capacity : "2"
vault:
- name : "test"
type : "static"
envVariables :
Env : "UAT"
开发人员错误地放置了vault并将其与参数对齐,因此资源没有得到部署。詹金斯的工作也没有出错。 因此,在损失了几天之后,开发人员发现vault应该与Azure在同一条线上,然后在更正此问题并再次运行作业之后,这次部署了资源
因此,我尝试在加载spec文件的Python文件中进行验证。我有一个示例模式验证文件“paas\u app\u service\u Schema.py”,我想用它进行验证。我想将其与Cerberus验证库一起使用
因此,我在python代码中编写了如下函数:
def loaded_specfile_schema_validate(self, file_name):
v = Validator(file_name,paas_app_service_schema)
if v.errors:
logger.error("Errors in schema validation %s" % str(v.errors))
else:
logger.info("Validation OK***********")
return v.validate()
我在python代码的开头也提到了这些:
import yaml
import json
from cerberus import Validator
但在运行Jenkins作业后,我得到以下错误:
raise SchemaError(errors.SCHEMA_ERROR_DEFINITION_TYPE.format(schema))
cerberus.schema.SchemaError: schema definition for field 'spec_file.yml' must be a dict
是否知道如何修复此错误,以及是否有任何其他方法来解决我的规范文件的此问题,以便如果vault未与azure对齐,或者如果同一行中除了azure、vault和envVariables之外还有其他内容,jenkins作业将抛出错误。如何将此逻辑放入python代码中
目前没有回答
相关问题 更多 >
编程相关推荐