in rules/preview-rule/IAC_misconfiguration_proactive_plugin/src/index.ts [15:83]
async function runStep(): Promise<void> {
const params = getParams()
step.info(`PIPELINE_ID=${params.pipelineID}`)
step.info(`PIPELINE_NAME=${params.pipelineName}`)
step.info(`BUILD_NUMBER=${params.buildNumber}`)
step.info(`WORK_SPACE=${params.workSpace}`)
step.info(`PROJECT_DIR=${params.projectDir}`)
step.info(`BUILD_JOB_ID=${params.buildJobID}`)
step.info(`Init cloudconfig proactive...`)
// console.log('process.env', process.env);
const stackPath = process.env["StackPath"] as string
step.info(`stackPath=${stackPath}`)
const regionId = process.env["RegionId"] as string
step.info(`regionId=${regionId}`)
const enableEvaluate = process.env["EnableEvaluate"] as string
step.info(`enableEvaluate=${enableEvaluate}`)
const ak = process.env["AccessKey"] as string
const sk = process.env["AccessSecret"] as string
const sourceCode = await getCodeFileContent(stackPath)
console.log(`sourceCode=${sourceCode}`)
let apiConfig = newClientConfig(ak, sk);
const stackRespone = await getPreviewStack(apiConfig, sourceCode);
step.info(`stackProperties response=${stackRespone}`)
for (const resource of stackRespone) {
const resourceJson = JSON.stringify(resource)
step.info(`one begin scan resourceJson =${resourceJson}`)
let resourceTypeSpec = resource.acsResourceType || ''
step.info(`one resourceTypeSpec =${resourceTypeSpec}`)
if (resourceTypeSpec === '') {
resourceTypeSpec = getResourceType(resource.resourceType || '');
step.info(`one resourceTypeSpec by ros type =${resourceTypeSpec}`)
}
const proactiveRules = getProactiveRules(resourceTypeSpec)
step.info(`one proactiveRules =${proactiveRules}`)
const resourceProperties = resource.properties || ''
const resourcePropertiesJson = JSON.stringify(resourceProperties);
step.info(`one resourceProperties =${resourcePropertiesJson}`)
const result = await evaluateOneResourcePreRules(apiConfig, resourceTypeSpec, proactiveRules, resourcePropertiesJson)
step.info(`one evaluatePreRules =${JSON.stringify(result)}`)
result.body?.resourceEvaluations?.forEach(element => {
step.info(`one evaluatePreRules element =${JSON.stringify(element)}`)
let rules = element.rules || []
rules.forEach(rule => {
let identifier = rule.identifier
let complianceType = rule.complianceType
let annotation = rule.annotation
if(complianceType === 'NON_COMPLIANT') {
step.error(`evaluatePreRules noncompliant; reason:" ${identifier},${JSON.stringify(annotation)} `);
return ;
}
})
});
}
}