샘플을 CodeBuild 사용하여 테스트 보고서 만들기 AWS CLI - AWS CodeBuild

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

샘플을 CodeBuild 사용하여 테스트 보고서 만들기 AWS CLI

buildspec 파일에 지정한 테스트는 빌드 중에 실행됩니다. 이 샘플은 를 사용하여 테스트를 빌드에 AWS CLI 통합하는 방법을 보여줍니다 CodeBuild. JUnit을 사용하여 단위 테스트를 만들거나, 다른 도구를 사용하여 구성 테스트를 만들 수 있습니다. 그런 다음 테스트 결과를 평가하여 문제를 해결하거나 애플리케이션을 최적화할 수 있습니다.

CodeBuild API 또는 AWS CodeBuild 콘솔을 사용하여 테스트 결과에 액세스할 수 있습니다. 이 샘플에서는 테스트 결과를 S3 버킷으로 내보내도록 보고서를 구성하는 방법을 보여줍니다.

필수 조건

  • 테스트 케이스를 만듭니다. 이 샘플은 샘플 테스트 보고서에 포함할 테스트 케이스가 있다는 것을 전제로 작성된 것입니다. buildspec 파일에서 테스트 파일의 위치를 지정합니다.

    지원되는 테스트 보고서 파일 형식은 다음과 같습니다.

    • Cucumber JSON(.json)

    • JUnit XML(.xml)

    • NUnit XML(.xml)

    • NUnit3 XML(.xml)

    • TestNG XML(.xml)

    • Visual Studio TRX(.trx)

    이러한 형식 중 하나로 보고서 파일을 만들 수 있는 테스트 프레임워크로 테스트 케이스를 만듭니다(예: Surefire JUnit plugin, TestNG, Cucumber).

  • S3 버킷을 만들고 이름을 기록해 둡니다. 자세한 내용을 알아보려면 Amazon S3 사용 설명서S3 버킷을 생성하는 방법을 참조하세요.

  • IAM 역할을 생성하고 해당 ARN을 기록해 둡니다. 빌드 프로젝트를 만들 때 ARN이 필요합니다.

  • 역할에 다음 권한이 없는 경우 권한을 추가합니다.

    { "Effect": "Allow", "Resource": [ "*" ], "Action": [ "codebuild:CreateReportGroup", "codebuild:CreateReport", "codebuild:UpdateReport", "codebuild:BatchPutTestCases" ] }

    자세한 설명은 테스트 보고 작업에 대한 권한 섹션을 참조하세요.

보고서 그룹 만들기

  1. CreateReportGroupInput.json이라는 이름의 파일을 만듭니다.

  2. S3 버킷에 테스트 결과를 내보낼 폴더를 만듭니다.

  3. 다음을 CreateReportGroupInput.json에 복사합니다. <bucket-name>는 S3 버킷의 이름을 사용합니다. <path-to-folder>은 S3 버킷의 폴더 경로를 입력합니다.

    { "name": "<report-name>", "type": "TEST", "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<bucket-name>", "path": "<path-to-folder>", "packaging": "NONE" } } }
  4. CreateReportGroupInput.json을 포함하는 디렉터리에서 다음 명령을 실행합니다.

    aws codebuild create-report-group --cli-input-json file://CreateReportGroupInput.json

    출력은 다음과 같습니다. reportGroup의 ARN을 기록해 둡니다. 이 보고서 그룹을 사용하는 프로젝트를 만들 때 사용합니다.

    { "reportGroup": { "arn": "arn:aws:codebuild:us-west-2:123456789012:report-group/<report-name>", "name": "<report-name>", "type": "TEST", "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<s3-bucket-name>", "path": "<folder-path>", "packaging": "NONE", "encryptionKey": "arn:aws:kms:us-west-2:123456789012:alias/aws/s3" } }, "created": 1570837165.885, "lastModified": 1570837165.885 } }

보고서 그룹을 사용하여 프로젝트 구성

보고서를 실행하려면 먼저 보고서 그룹으로 구성된 CodeBuild 빌드 프로젝트를 만들어야 합니다. 보고서 그룹에 지정된 테스트 케이스는 빌드를 실행할 때 실행됩니다.

  1. 이름이 buildspec.yml인 buildspec 파일을 만듭니다

  2. 다음 YAML을 buildspec.yml 파일의 템플릿으로 사용합니다. 테스트를 실행하는 명령이 포함되어야 합니다. reports 섹션에서는 테스트 케이스 결과가 포함된 파일을 지정합니다. 이 파일에는 액세스할 수 있는 테스트 결과가 저장됩니다 CodeBuild. 작성되고 30일 후에 만료됩니다. 이러한 파일은 S3 버킷으로 내보내는 원시 테스트 케이스 결과 파일과 다릅니다.

    version: 0.2 phases: install: runtime-versions: java: openjdk8 build: commands: - echo Running tests - <enter commands to run your tests> reports: <report-name-or-arn>: #test file information files: - '<test-result-files>' base-directory: '<optional-base-directory>' discard-paths: false #do not remove file paths from test result files
    참고

    기존 보고서 그룹의 ARN 대신, 생성되지 않은 보고서 그룹의 이름을 지정할 수도 있습니다. ARN 대신 이름을 지정하는 경우 빌드를 실행할 때 보고서 그룹이 CodeBuild 생성됩니다. 이름에는 프로젝트 이름과 buildspec 파일에 지정한 이름이 project-name-report-group-name 형식으로 포함되어 있습니다. 자세한 내용은 테스트 보고서 작성보고서 그룹 이름 지정 섹션을 참조하세요.

  3. project.json이라는 이름의 파일을 만듭니다. 이 파일에는 create-project 명령에 대한 입력이 들어 있습니다.

  4. 다음 JSON을 project.json에 복사합니다. source는 소스 파일이 들어있는 저장소의 유형과 위치를 입력합니다. serviceRole은 사용 중인 역할의 ARN을 지정합니다.

    { "name": "test-report-project", "description": "sample-test-report-project", "source": { "type": "CODECOMMIT|CODEPIPELINE|GITHUB|S3|BITBUCKET|GITHUB_ENTERPRISE|NO_SOURCE", "location": "<your-source-url>" }, "artifacts": { "type": "NO_ARTIFACTS" }, "cache": { "type": "NO_CACHE" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "small" }, "serviceRole": "arn:aws:iam::<your-aws-account-id>:role/service-role/<your-role-name>" }
  5. project.json을 포함하는 디렉터리에서 다음 명령을 실행합니다. 이렇게 하면 이름이 test-project인 프로젝트가 생성됩니다.

    aws codebuild create-project --cli-input-json file://project.json

보고서 실행 및 결과 보기

이 섹션에서는 이전에 만든 프로젝트의 빌드를 실행합니다. 빌드 프로세스 중에 테스트 사례의 결과가 포함된 보고서를 CodeBuild 생성합니다. 보고서는 지정한 보고서 그룹에 포함되어 있습니다.

  1. 빌드를 시작하려면 다음 명령을 실행합니다. test-report-project는 위에서 만든 빌드 프로젝트의 이름입니다. 출력에 나타나는 빌드 ID를 기록해 둡니다.

    aws codebuild start-build --project-name test-report-project
  2. 다음 명령을 실행하여 보고서의 ARN을 포함하여 빌드에 대한 정보를 가져옵니다. <build-id>은 빌드 ID를 지정합니다. 출력의 reportArns 속성에 보고서 ARN을 기록해 둡니다.

    aws codebuild batch-get-builds --ids <build-id>
  3. 보고서에 대한 세부 정보를 가져오려면 다음 명령을 실행합니다. <report-arn>은 보고서 ARN을 지정합니다.

    aws codebuild batch-get-reports --report-arns <report-arn>

    출력은 다음과 같습니다. 이 샘플 출력은 성공했거나, 실패했거나, 건너뛰었거나, 오류가 발생했거나, 알 수 없는 상태를 반환하는 테스트 수를 보여 줍니다.

    { "reports": [ { "status": "FAILED", "reportGroupArn": "<report-group-arn>", "name": "<report-group-name>", "created": 1573324770.154, "exportConfig": { "exportConfigType": "S3", "s3Destination": { "bucket": "<your-S3-bucket>", "path": "<path-to-your-report-results>", "packaging": "NONE", "encryptionKey": "<encryption-key>" } }, "expired": 1575916770.0, "truncated": false, "executionId": "arn:aws:codebuild:us-west-2:123456789012:build/<name-of-build-project>:2c254862-ddf6-4831-a53f-6839a73829c1", "type": "TEST", "arn": "<report-arn>", "testSummary": { "durationInNanoSeconds": 6657770, "total": 11, "statusCounts": { "FAILED": 3, "SKIPPED": 7, "ERROR": 0, "SUCCEEDED": 1, "UNKNOWN": 0 } } } ], "reportsNotFound": [] }
  4. 보고서의 테스트 케이스에 대한 정보를 나열하려면 다음 명령을 실행합니다. <report-arn>은 보고서의 ARN을 지정합니다. 선택 사항인 --filter 매개변수의 경우 하나의 상태 결과(SUCCEEDED, FAILED, SKIPPED, ERROR 또는 UNKNOWN)를 지정할 수 있습니다.

    aws codebuild describe-test-cases \ --report-arn <report-arn> \ --filter status=SUCCEEDED|FAILED|SKIPPED|ERROR|UNKNOWN

    출력은 다음과 같습니다.

    { "testCases": [ { "status": "FAILED", "name": "Test case 1", "expired": 1575916770.0, "reportArn": "<report-arn>", "prefix": "Cucumber tests for agent", "message": "A test message", "durationInNanoSeconds": 1540540, "testRawDataPath": "<path-to-output-report-files>" }, { "status": "SUCCEEDED", "name": "Test case 2", "expired": 1575916770.0, "reportArn": "<report-arn>", "prefix": "Cucumber tests for agent", "message": "A test message", "durationInNanoSeconds": 1540540, "testRawDataPath": "<path-to-output-report-files>" } ] }