最近在项目中在配置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

持续集成时 travis 和 codecov 等 yaml 文件的配置的更多相关文章

  1. 用持续集成工具Travis进行构建和部署

    用持续集成工具Travis进行构建和部署 用持续集成工具Travis进行构建和部署 摘要:本文简单说明了如何使用持续集成工具Travis进行构建和部署的过程. 1. 概述 持续集成(Continuou ...

  2. 持续集成(CI)工具------Hudson/Jenkins(Continuous Integration)安装与配置具体解释

    本文同意转载.但请标明出处:http://blog.csdn.net/wanghantong/article/40985653/, 版权全部 文章概述: 一. 描写叙述了持续集成工具Hudson的安装 ...

  3. [Jenkins]持续集成环境下fingbug插件的安装使用与配置

    参考:https://wiki.jenkins.io/display/JENKINS/FindBugs+Plugin 突然,天降杂事.我是想安安静静的做个美丽的测试...但是事与愿违,项目经理叫我帮忙 ...

  4. .net持续集成cake篇之cake任务依赖、自定义配置荐及环境变量读取

    系列目录 新建一个构建任务及任务依赖关系设置 上节我们通过新建一个HelloWorld示例讲解了如何编写build.cake以及如何下载build.ps1启动文件以及如何运行.实际项目中,我们使用最多 ...

  5. [持续集成学习篇]【1】[jenkins安装与配置]

    Guided Tour This guided tour will use the "standalone" Jenkins distribution which requires ...

  6. Travis CI持续集成使用

    用好这个工具不仅可以提高效率,还能使开发流程更可靠和专业化,从而提高软件的价值.而且,它对于开源项目是免费的,不花一分钱,就能帮你做掉很多事情. 一.什么是持续集成? Travis CI 提供的是持续 ...

  7. 使用Travis进行持续集成

    使用Travis进行持续集成 廖雪峰 持续集成:Continuous Integration,简称CI,意思是,在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测 ...

  8. 视频云SDK iOS持续集成项目实践

    1. 前言 2016年, 我们维护的 iOS推流播放融合SDK KSYLive_iOS 在github上发布了40多个版本, 平均两周发布一个新版本, 经历了最初痛苦的全手动版本构建和维护, 到后来慢 ...

  9. Kubernetes 持续集成 SpringCloud

    写在开始之前,在开始之前我们需要了解几个概念: 1.什么是持续集成? 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次 ...

随机推荐

  1. Linux超级守护进程——xinetd

    一 Linux守护进程 Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程来执行的. ...

  2. ionic 打包 报错Execution failed for task ':processDebugResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt

    在platform --> android目录下找到build.gradle文件,打开并在def promptForReleaseKeyPassword() {...}函数前加入以下内容: 完整 ...

  3. java多线程快速入门(二十)

    1.Java.util的线程安全工具类 Vector(线程安全) ArrayList(线程不安全) HashTable(线程安全) HashMap(线程不安全) 2.将线程不安全集合变为线程安全集合 ...

  4. Android 基础 二 四大组件 Activity

    Activity Intent IntentFilter 一理论概述 一. Activity 用来提供一个能让用户操作并与之交互的界面. 1.1 启动 startActivity(Intent int ...

  5. npm 如何查看一个包的版本信息?

    转载. https://blog.csdn.net/cvper/article/details/79543262 有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的, 所以我们要 ...

  6. Python交换a,b两个数值的三种方式

    # coding:utf-8 a = 1 b = 2 # 第一种方式 # t = a # 临时存放变量值 # a = b # b = t # 第二种方式 # a = a + b # a的值已经不是原始 ...

  7. js--基础(对象、数组、函数、if语句、while语句、do while语句、continue语句、break语句)

    三.流程控制:1.单行语句var age =20;//单行语句 2.复合语句花括号包含起来的与聚集和叫做复合语句,一对花括号表示一个复合语句 ,处理时可以当成一个单行语句来看待,一般复合句与叫做代码块 ...

  8. appium 手势

    1.2 appium玩转安卓手机 智能手机发展到今天,形成了一整套有关手势操作的操作习惯,如手指左右上下滑动,及双指缩放,还有手指的滑动解锁,摇晃手机等动作.那么我们怎么在python中利用appiu ...

  9. 牛客寒假算法基础集训营4 I题 Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I 来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如--判断一个字符串是不是回文串. ...

  10. 从0开始简单使用git进行项目开发【SourceTree+Coding.net】

    一.什么是git? 含义:Git 是 Linux 发明者 Linus 开发的一款新时代的版本控制系统,相比于原来的svn系统更加简单和实用 作用: 熟悉编程的知道,我们在软件开发中源代码其实是最重要的 ...