

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS CodeBuild 搭配 Codecov 使用
<a name="codecov-integration"></a>

Codecov 是一種用於測量程式碼測試涵蓋範圍的工具。Codecov 可識別程式碼中的哪些方法和陳述式尚未經過測試。使用結果來決定要將測試寫入哪個位置，提升程式碼的品質。Codecov 適用於 CodeBuild 支援的三個來源儲存庫：GitHub、GitHub Enterprise Server 和 Bitbucket。如果您的建置專案使用 GitHub Enterprise Server，則必須使用 Codecov Enterprise。

 當您執行與 Codecov 整合的 CodeBuild 專案建置時，分析儲存庫中程式碼的 Codecov 報告會上傳至 Codecov。建置日誌包含報告的連結。此範例示範如何將 Python 和 Java 建置專案與 Codecov 加以整合。如需 Codecov 支援語言清單，請參閱 Codecov 網站上的 [Codecov 支援語言](https://docs.codecov.io/docs/supported-languages)。

## 將 Codecov 整合至建置專案
<a name="integrate-codecov"></a>

使用下列程序將 Codecov 整合到建置專案中。

**整合 Codecov 與建置專案**

1. 前往 [https://codecov.io/signup](https://codecov.io/signup) 並註冊 GitHub 或 Bitbucket 來源儲存庫。如果您使用的是 GitHub Enterprise，則請參閱 Codecov 網站上的 [Codecov Enterprise](https://codecov.io/enterprise)。

1.  在 Codecov 中，新增儲存庫以用於您需要的涵蓋範圍。

1.  當畫面上顯示字符資訊時，請選擇 **Copy** (複製)。  
![\[隨即顯示字符資訊。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/codecov-token.png)

1.  將複製的字符以名為 `CODECOV_TOKEN` 環境變數的形式新增至建置專案。如需詳細資訊，請參閱[變更建置專案的設定 (主控台)](change-project.md#change-project-console)。

1.  在儲存庫中建立名為 `my_script.sh` 的文字檔案。在檔案中輸入下列內容：

   ```
   #/bin/bash
   bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN
   ```

1.  針對適合您建置專案使用的情況，選擇 **Python** 或 **Java** 標籤，然後按照下列步驟進行。

------
#### [ Java ]

   1.  將下列 JaCoCo 外掛程式新增至儲存庫中的 `pom.xml`。

      ```
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      ```

   1.  在 Buildspec 檔案中輸入下列命令。如需詳細資訊，請參閱[Buildspec 語法](build-spec-ref.md#build-spec-ref-syntax)。

      ```
      build:
        - mvn test -f pom.xml -fn
      postbuild:
        - echo 'Connect to CodeCov'
        - bash my_script.sh
      ```

------
#### [ Python ]

    在 Buildspec 檔案中輸入下列命令。如需詳細資訊，請參閱[Buildspec 語法](build-spec-ref.md#build-spec-ref-syntax)。

   ```
   build:
     - pip install coverage
     - coverage run -m unittest discover
   postbuild:
     - echo 'Connect to CodeCov'
     - bash my_script.sh
   ```

------

1.  執行建置專案的建置。針對專案產生的 Codecov 報告連結會顯示在建置日誌中。使用連結檢視 Codecov 報告。如需詳細資訊，請參閱[手動執行 AWS CodeBuild 組建](run-build.md)及[使用 記錄 AWS CodeBuild API 呼叫 AWS CloudTrail](cloudtrail.md)。建置日誌中的 Codecov 資訊看起來類似下列內容：

   ```
   [Container] 2020/03/09 16:31:04 Running command bash my_script.sh
   
     _____          _
    / ____|        | |
   | |     ___   __| | ___  ___ _____   __
   | |    / _ \ / _` |/ _ \/ __/ _ \ \ / /
   | |___| (_) | (_| |  __/ (_| (_) \ V /
    \_____\___/ \__,_|\___|\___\___/ \_/
                                 Bash-20200303-bc4d7e6
   
   ·[0;90m==>·[0m AWS CodeBuild detected.
   ... The full list of Codecov log entries has been omitted for brevity ...
       ·
       ·[0;32m->·[0m View reports at ·[0;36mhttps://codecov.io/github/user/test_py/commit/commit-id·[0m
   
   [Container] 2020/03/09 16:31:07 Phase complete: POST_BUILD State: SUCCEEDED
   ```

    報告看起來類似下列內容：  
![\[範例報告。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/codecov-report.png)