IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 偶然在github开源项目中发现了.travis.yml这货 -> 正文阅读

[开发工具]偶然在github开源项目中发现了.travis.yml这货

前言

偶然在一个github开源项目中发现了.travis.yml这货,然后一发不可收拾,翻了翻之前看的几个开源库都有这个文件,并且最近经常看到它,这被称为“巴德尔-迈因霍夫现象”,是一种认知偏见,即在第一次注意到某一事物后,有一种更频繁地注意到它的倾向,导致某人相信它有很高的频率,既然这样索性就深入研究了一下这个文件,发现它原来是用于持续集成的。

持续集成

持续集成是一种 DevOps(Development和Operations的组合词)软件开发实践。采用持续集成时,开发人员会定期将代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来进行验证,从而尽早地发现集成错误,提高软件质量,并减少验证和发布新软件更新所需的时间。

持续集成是将构建并测试的过程自动化,在你提交代码时,持续集成服务能够自动触发构建与测试过程,并反馈结果,加快开发周期,同时减少脏代码的引入,而持续集成工具有很多,常见的包括 JenkinsGitlab-CITravis CIAppVeyor,github上项目的持续集成可以选择使用 Travis CI,也有项目使用 AppVeyor,它们都是开源持续集成云服务。

YAML

.travis.yml 是 github 用于说明持续集成步骤配置文件,使用的语言是 YAML。它是一种可读性非常高,与程序语言数据结构非常接近,同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。经常会拿它和 XMLJSON 进行对比,YAMLXML 语法简洁得多,但是没有 XML 的标签概念,而 JSON 语法是 YAML 1.2 的子集,非常接近 YAML1.0YAML1.1 的子集。

YAML 可以简单表达清单、散列表,标量等数据结构。它使用空白符号缩进,适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲等,配置文件后缀为通常为 .yml,比如:.travis.yml

关于具体的语法本文就不展开说了,网上自行搜索一下,不同类型的项目的配置通常有自己的规范,可以参照 travis官方 配置说明,下面展示一个 .travis.yml 文件

language: cpp

sudo: false

os:
  - linux
  - osx

compiler:
  - gcc
  - clang

script:
  - $CC ccronexpr.c ccronexpr_test.c -I. -Wall -Wextra -std=c89 -DCRON_TEST_MALLOC -o a.out && ./a.out
  - $CXX ccronexpr.c ccronexpr_test.c -I. -Wall -Wextra -std=c++11 -DCRON_TEST_MALLOC -o a.out && ./a.out

notifications:
  email:
    on_success: always

第一次使用 .travis.yml

要想学会一件事必须反复强化记忆,所以我决定自己写个.travis.yml来使用一次,刚开始语法还不太熟悉,所以我打算在一些开源项目的文件基础上来修改,需求也比较简单,只要能实现我上传到github的代码能自动编译就可以了。

注册登录travis

登陆 travis 官网,直接用github账号登陆即可,这样 travis 可以直接关联登录的github账号,自动获取你的仓库信息。

travis-ci-1

登陆之后,点击settings,然后激活 Travis CI 勾选需要持续集成的仓库。

travis-ci2

编写代码

为了方便测试,我们只编写一个简单的 HelloWolrd.cpp 测试文件好了

#include <iostream>

int main() {

    std::cout << "Hello World!" << std::endl;
    return 0;
}

编写.travis.yml

我只写了一个文件,要求只要编译 gcc 通过就行了,暂时也不需要邮件通知

language: cpp

sudo: false

os:
  - linux

compiler:
  - gcc

script:
  - $CXX wolrd/code/c++/HelloWorld.cpp -o a.out && ./a.out

推送代码启动Travis CI

Albert@home-pc MINGW64 /d/data/maingit/HelloWorld (master)
$ git add .

Albert@home-pc MINGW64 /d/data/maingit/HelloWorld (master)
$ git commit -m"test travis ci"
[master 8e92384] test travis ci
 2 files changed, 2 insertions(+), 2 deletions(-)
Albert@home-pc MINGW64 /d/data/maingit/HelloWorld (master)
$ git push
Enumerating objects: 13, done.
Counting objects: 100% (13/13), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 604 bytes | 302.00 KiB/s, done.
Total 7 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To github.com:AlbertGithubHome/HelloWorld.git
   af45c67..8e92384  master -> master

推送之后travis-ci网站会自动启动,构建过程和结果如下:

travis-ci-3

第一次尝试失败,检查发现编译文件的路径写错了,修改后再次推送,成功构建的界面如下:

travis-ci4
然后就可以在编译状态按钮后面领取这样一个标签,它可以根据项目构建状态实时变化,快把它加到项目的README文件里吧。

[![Build Status](https://app.travis-ci.com/AlbertGithubHome/HelloWorld.svg?branch=master)](https://app.travis-ci.com/AlbertGithubHome/HelloWorld)

travis-ci5

总结

  • .travis.yml 是使用 Travis CI 持续集成服务的配置文件,使用 YAML 语言编写
  • YAMLXML 语法简洁得多,但是没有 XML 的标签概念,而 JSON 语法是 YAML 1.2 的子集
  • GitHubTravis CI 是一对好基友,几乎不用额外的配置,只要按照官方语法写好 .travis.yml 文件即可
  • 可以把Travis CI 看成一个机器人,每当我们 push 代码时,这个机器人会按照既定流程帮我们自动构建和检测

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

卅是一个阶段,更是一个开始~

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:39:36  更:2022-07-05 23:39:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:49:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码