Travis CI为每一种语言提供了一个默认的构建环境和一个默认的阶段集合。它能够为项目job的构建活动创建虚拟机,并将项目仓库在虚拟机中克隆,安装可选的插件,并运行构建过程的各个阶段。

  1. 构建:.travis.yml文件描述了构建的整个过程。在TravisCI中的每一个构建都是由一系列阶段(stage)所组成的。而这些阶段又被分成了不同的并行的job来运行。

  2. job的生命周期:job的生命周期也是由多个阶段(phase)组成的。主要的阶段包括:

    1. Install - 安装所需的依赖
    2. Script - 执行构建脚本

    除此之外,还可以选择以下的命令定制自己的构建过程:

    1. Before-install - 在安装阶段之前所需要做的步骤
    2. Before-script - 在执行脚本之前所需要做的步骤
    3. After-script - 在执行脚本之后所需要做的步骤
    4. After-success - 当构建成功时(比如生成构建文档),在travis_test_result环境变量下的结果
    5. After-failure - 当构建失败时(比如上传日志文件),在travis_test_result环境变量下的结果

    除此之外,还有三种可选的部署阶段命令。

    一个完整的job生命周期所包含的步骤如下所示:

    1. 可选安装 apt addons
    2. 可选安装 cache components
    3. Before_install
    4. install
    5. Before_script
    6. Script
    7. 可选 before_cache(只有当缓存生效的时候)
    8. after_success或者after_failure
    9. 可选 before_deploy(只有当deploy被激活时)
    10. 可选deploy
    11. 可选after_deploy(只有当deploy被激活时)
    12. After_script
  3. 定制你的安装(install)阶段

    默认的依赖安装命令取决于项目所使用的语言。比如Java构建通常会使用maven或者gradle,这取决于仓库中的构建文件。使用Ruby的项目如果在仓库中存在Gemfile,会配置Bundler安装命令。

    你可以定制自己的脚本去安装项目依赖:

    install: ./install_dependencies.sh
    

    当使用自定义的脚本时,脚本的权限需要设置为可执行(比如使用chmod +x命令),并且需要包含一个有效的事务行比如:/usr/bin/env sh, /usr/bin/env ruby, 或者/usr/bin/env python。

    除此之外,你还可以提供多个步骤,比如可以安装ruby和node两种依赖:

    install:bundle install -- path vendor/bundlenpm install
    

    如果设置了多种安装依赖,当其中一个安装失败时,整个构建过程就会立即终止并且被标记为errored。

    除此之外,你还可以使用Apt-get或者snap去安装依赖。

  4. 跳过安装(install)阶段

    通过向travis.yml中添加命令来跳过整个安装阶段:

    install: skip
    
  5. 定制你的构建(build)阶段

    默认的构建命令取决于项目所使用的语言。比如Ruby语言使用的构建命令是rake,这是大多数Ruby语言最常见的命令方式。

    你可以在配置文件travis.yml中重写默认构建:

    script: bundle exec thor build
    

    你可以使用命令规定多个构建脚本:

    script:- bundle exec rake build- bundle exec rake builddoc
    

    如果这些构建命令的其中一个返回非0的结果,travis CI构建机制会自动运行接下来的命令并且累计构建结果。

    比如上面的例子,命令bundle exec rake build命令返回的状态码为1,环境仍然会继续运行bundle exec rake builddoc命令,但是最后的构建结果仍然是失败(failure)。

    这种机制适用于一些场景。比如,你的第一步想执行单元测试,第二步想执行集成测试,如果第一步单元测试失败了,你仍然想知道集成测试是否能够成功。

    当然你也可以通过修改命令去改变这种机制:

    script:- bundle exec rake build && bundle exec rake builddoc
    

    通过这种写法,如果bundle exec rake build返回非0的结果,那么整个构建就会立即失败。

  6. 复杂的构建命令

    如果你的构建环境过于复杂以致于很难在travis.yml配置文件中进行配置,可以考虑写一个独立的shell脚本。可以将脚本放在你的项目的仓库中,使它能够轻易地被配置文件travis.yml调用。

    比如这样一个场景。你想执行更多更复杂的测试场景,但是想排除来自于pull request的构建,那么你可以建立这样一个shell文件:

    #!/bin/bash
    set -ev
    bundle exec rake:units
    if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; thenbundle exec rake test:integration
    fi
    

    如何在travis.yml中调用这个shell文件呢?

    1. 将shell文件在项目仓库中存为scripts/run_tests.sh
    2. 运行命令chmod ugo+x scripts/run_tests.sh为文件添加可执行权限
    3. 提交到仓库中
    4. 添加到travis.yml文件中(代码如下)
    script: ./scripts/run-tests.sh
    
  7. 中断构建

    如果job的生命周期的前四个步骤返回非0的状态吗,那么本次构建就会被中断。可以分成以下两种情况:

    1. 如果before_install, install, 和before_script三个阶段返回非0状态码,本次构建为errored并且立即终止
    2. 如果script阶段返回非0状态码,本次构建为失败failed,但是直到被标记为failed之前仍然在运行

    阶段after_success, after_failure, after_script, 以及after_deploy以及其后续的阶段都不对最后的构建结果产生影响。但是如果这些阶段的其中一个发生了超时,那么构建结果会被标识为failed。

  8. 部署代码

    在job的生命周期中部署是可选步骤。这个步骤被定义为使用一种持续部署工具将代码部署到Heroku, Amazon或者其他的不同的平台上。如果构建步骤中断了,那么部署阶段就不会被执行。

    配置代码如下:

    deploy:skip_cleanup: true
    

    你也可以在执行deploy命令之前执行before_deploy命令。如果这个阶段的返回状态是非0,那么整个构建为errored。

    如果你在部署之后需要做一些事情,也可以通过after_deploy命令来配置。

    但是after_deploy命令的返回结果是不影响整个构建的结果的。

【Travis CI使用教程】如何让定制你的travis.yml配置文件相关推荐

  1. Travis CI mysql_DevOps工具介绍连载(34)——Travis CI

    原标题:DevOps工具介绍连载(34)--Travis CI Travis CI 持续集成 Travis CI 是在线托管的持续集成服务,绑定Github项目,抓取新的代码自动进行测试构建,甚至自动 ...

  2. flutter ios打包_使用 Travis CI 为 Flutter 项目打包 Android/iOS 应用

    Travis CI 构建 Building Flutter APKs and IPAs on Travis 这篇文章详细介绍了如何在 Travis CI 上为 Flutter 项目打包 Android ...

  3. iOS中 为 iOS 建立 Travis CI 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang新浪微博! 你是否曾经试着为 iOS 项目搭建一台支持持续集成的服务器,从我的个人经验而言,这可不是一个轻松的活.首先需要准备一台 ...

  4. 基于Travis CI实现 Hexo 在 Github 和 Coding 的同步部署

      各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是 https://qinyuanpei.github.io .在曾经的一篇博客:<持续集成在Hexo自动化部署上的实践& ...

  5. 持续集成服务 Travis CI 教程

    编写代码只是软件开发的一小部分,更多的时间往往花在构建(build)和测试(test). 为了提高软件开发的效率,构建和测试的自动化工具层出不穷.Travis CI 就是这类工具之中,市场份额最大的一 ...

  6. django 集成个推_持续集成CircleCI vs Travis CI vs Jenkins

    Continuous Integration. CircleCI vs Travis CI vs Jenkins​hackernoon.com 持续集成(CI)的定义及其主要目标 持续集成(CI)是一 ...

  7. travis-ci自动部署_如何使用Travis CI设置高级自动部署

    travis-ci自动部署 by Amir Off 由Amir Off 如何使用Travis CI设置高级自动部署 (How to set up advanced automatic deployme ...

  8. 构建指定仓库_使用Travis CI自动构建和部署你的GitBook

    本文,博主将会介绍利用Travis CI持续集成服务自动化构建和部署GitBook. 首先介绍一下TravisCI,下文摘自维基百科-Travis CI Travis CI是在软件开发领域中的一个在线 ...

  9. 持续集成与持续部署(五)01-TravisCI——使用简介-Travis CI 只支持 Github,提供的是持续集成服务 配置项目的.travis.yml文件

    持续集成与持续部署(五)01-TravisCI--使用简介-Travis CI 只支持 Github,提供的是持续集成服务 & 配置项目的.travis.yml文件 TravisCI 使用简介 ...

  10. Vite(三)部署静态站点(wordpress与hugo与Vercel、CI/CD、Travis CI、GitLab CI)、环境变量与模式、服务端渲染(SSR)

    Vite(三)部署静态站点(wordpress与hugo与Vercel.CI/CD.Travis CI.GitLab CI).环境变量与模式.服务端渲染(SSR) 文章目录 Vite(三)部署静态站点 ...

最新文章

  1. tensorflow对应的python版本清单
  2. 5G风起,四大IoT迎风爆发!智能家居与电表高速增长
  3. 手机端自适应字体大小和元素宽度自适应
  4. ABAP和XML数据格式互相转换的两种方式
  5. python head 函数_python爬虫中header是什么?怎么用?
  6. FreeModbus TCP传输
  7. python函数应用(2)
  8. nndl学习笔记(二)反向传播公式推导与详解
  9. python拼写错误20几分钟怎么办_Python | 21行轻松搞定拼写检查器
  10. 使用Idea添加PYTHONPATH的一种方案
  11. 相机快门、 光圈有啥区别?
  12. 清华北大领跑亚洲,泰晤士高等教育2020世界大学排名发布!
  13. 2018乌镇峰会 -- 完美世界萧泓论道互联网与文化交流
  14. 海信85U7G和海信85U7G-PRO有什么区别 哪个好详细性能配置对比
  15. 基于改进层次凝聚聚类算法的垃圾收运跨区域调度策略
  16. Redis 之BIO与RIO
  17. 用python写一个ip查询工具库
  18. 绿氢、蓝氢、灰氢,原来氢也可以这么出彩
  19. 使用容联云通讯实现电话云呼叫功能
  20. 解决labelimg闪退

热门文章

  1. 2020年阴历三月初九投资理财~从牛人那里吸取能量,让自己更加强大
  2. 华为U5800刷机,Root权限
  3. java wed 1
  4. 特斯拉开火,状告5名前员工、小鹏汽车、Zoox身陷漩涡
  5. General Partial Label Learning via Dual Bipartite Graph Autoencoder
  6. 荐书一本-----《天才在左,疯子在右》
  7. facebook登陆授权 服务器接入记录
  8. stm32幂指数运算时的错误显示与解决方案
  9. ubuntu系统清理垃圾
  10. 卫星遥感影像查询网址