async function runStep()

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 ;
                }
            })

        });
    }
}