를 사용하여 CodeBuild에서 테스트 보고서 작성AWS CLI샘플 - AWS CodeBuild

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

를 사용하여 CodeBuild에서 테스트 보고서 작성AWS CLI샘플

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

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

Prerequisites

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

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

    • 오이 JSON (.json)

    • 제이유닛 XML (.xml)

    • 엔유닛 XML (.xml)

    • 누니트3 XML (.xml)

    • 테스트 XML (.xml)

    • 비주얼 스튜디오 TRX (.trx)

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

  • S3 버킷을 만들고 이름을 기록해 둡니다. 자세한 내용은 단원을 참조하십시오.S3 버킷을 생성하려면 어떻게 해야 합니까?Amazon 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:4.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를 지정합니다. 에서 보고서 ARN을 기록해 둡니다.reportArns출력의 속성입니다.

    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>" } ] }