持续集成时 travis 和 codecov 等 yaml 文件的配置

最近在项目中在配置CodeCov 以及TravisAppVeyor做持续集成时,遇到了一些问题,也解决了一些问题。顺便拿来分享一下。

首先时Travis,这个主要是来跑基于 Linux 环境下的一些测试的。你可以自定义push到 master上 或者 进行 pull request 时自动进行。

其次时 AppVeyor 这个我在项目中主要是来跑Windows环境的,虽然说这个两个环境都可以跑。

还有时 CodeCov 这个用来你的代码测试用例的可视化的,查看代码的覆盖率。

下面就是各个 .yaml 文件的大致配置:

# .travis.yml
language: csharp
sudo: true
mono: none
dotnet: 2.2
dist: xenial
branches:
  only:
    - master
install:
  - dotnet tool install --global altcover.visualizer
  - cd Tests/ && dotnet add package AltCover && cd ../
  - dotnet restore
script:
  - dotnet build
  - if [ $ACCESS_KEY_ID == "" ]; then dotnet test --filter Category!=FeatureTest /p:AltCover=true; else dotnet test /p:AltCover=true; fi
after_success:
  - cd Tests/
  - bash <(curl -s https://codecov.io/bash) -c -F unittest
# .appveyor.yml
version: "1.0.{build}"
image: Visual Studio 2017
branches:
  only:
    - master
init:
  - cmd: git config --global core.autocrlf true
install:
  - cmd: dotnet --version
  - cmd: dotnet tool install --global altcover.visualizer
  - cmd: cd Tests/ && dotnet add package AltCover && cd ../
build_script:
  - cmd: dotnet restore
  - cmd: dotnet build
test_script:
  - dotnet build
  - IF NOT DEFINED ACCESS_KEY_ID (dotnet test aliyun-net-sdk-core.Tests /p:AltCover=true) ELSE (dotnet test /p:AltCover=true)
on_finish:
  - cmd: cd Tests
  - ps: |
      $env:PATH = 'C:\msys64\usr\bin;' + $env:PATH
      Invoke-WebRequest -Uri 'https://codecov.io/bash' -OutFile codecov.sh
      bash codecov.sh -f "coverage.xml" -c -F unittest
#.codecov.yml
codecov:
  notify:
    after_n_builds: 2

coverage:
  status:
    project:
      default: off
      unittest:
        flags: unittest
        target: 85%
      featuretest:
        flags: featuretest
flags:
  unittest:
    # only test unittests
    paths:
      - Tests/
  featuretest:
    # only test featuretest
    paths:
      - feature-test/

之前有一个需求是,执行具体的测试的时候不进行CodeCov, 比如进行 Feature Test 的时候就不用进行 Codecov,那么在配置文件中如何配置呢?
这就需要使用 Codecov 的Flag 标签,执行测试的时候指定具体要执行的目录和标签。就可以解决这个问题了。

flags:
  unittest:
    # only test unittests
    paths:
      - Tests/

然后在生成时改成这个命令即可: bash codecov.sh -f "coverage.xml" -c -F unittest

posted @ 2019-03-11 18:54  BUTTERAPPLE  阅读(616)  评论(0编辑  收藏  举报