Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import * as cdk from 'aws-cdk-lib'; import * as codebuild from 'aws-cdk-lib/aws-codebuild'; import * as codepipeline from 'aws-cdk-lib/aws-codepipeline'; import * as codepipeline_actions from 'aws-cdk-lib/aws-codepipeline-actions'; import * as iam from 'aws-cdk-lib/aws-iam'; import { Construct } from 'constructs'; export interface CDKCodeBuildSonarcloudProps { readonly sourceOutput: codepipeline.Artifact; readonly sonarOrganizationName: string; readonly sonarProjectName: string; } export class CDKCodeBuildSonarcloud extends Construct { //Build action to include in your pipeline public readonly buildAction: codepipeline_actions.CodeBuildAction; constructor(scope: Construct, id: string, props: CDKCodeBuildSonarcloudProps) { super(scope, id); // Create an IAM policy statement granting access to the secret const secretAccessPolicy = new iam.PolicyStatement({ actions: ['secretsmanager:GetSecretValue'], resources: [`arn:aws:secretsmanager:${cdk.Stack.of(this).region}:${cdk.Stack.of(this).account}:secret:sonar-token-*`], }); const projectSonarScan = new codebuild.PipelineProject(this, 'SonarScannerProject', { // Configure CodeBuild project for sonarcloud scan environment: { buildImage: codebuild.LinuxBuildImage.STANDARD_7_0, }, buildSpec: codebuild.BuildSpec.fromObject({ version: '0.2', phases: { install: { commands: [ 'npm install -g sonar-scanner', ], }, build: { commands: [ 'SONAR_TOKEN=$(aws secretsmanager get-secret-value --secret-id sonar-token --query SecretString --output text | jq -r .SONAR_TOKEN)', `sonar-scanner -Dsonar.organization=${props.sonarOrganizationName} -Dsonar.projectKey=${props.sonarProjectName} -Dsonar.sources=. -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN`, ], }, }, }), }); projectSonarScan.addToRolePolicy(secretAccessPolicy); // Define build action for CodePipeline this.buildAction = new codepipeline_actions.CodeBuildAction({ actionName: 'SonarScanner_Build', project: projectSonarScan, input: props.sourceOutput, }); } } |