给github项目加上持续集成(travis-ci)与自动release发布软件功能

最近偶然接触到了ci(持续集成)这个神奇的东西,碰巧翻了翻travis-ci的文档,发现写得十分详细,而且对公开项目是免费的,于是就为几个部署尝试了一下

文章中大部分内容都可以直接在https://docs.travis-ci.com/找到,这篇文章只是作为简单记录,同时也为第一次使用的各位减少一些坑。chenxublog.com

导入项目

首先我们先去 https://travis-ci.com 注册一个自己的账号,直接用自己的GitHub账号登陆就可以了,在右上角头像那里进入设置,然后点管理GitHub上的项目:

选择所有项目,然后保存就可以了:

配置

配置的方法十分简单,只要在自己git项目的根目录放一个文件,名字叫.travis.yml,再按照官方文档的格式写好配置文件,commit上去之后,travis-ci会自动运行整个流程(如果配置正确的话)

我这里只拿我的maildisk项目作为举例,其他项目类型请参考官方文档。

根据官方文档,普通的c#工程只需要几行配置就搞定了,比如说我的接待喵机器人配置:

language: csharp
solution: Newbe.Mahua.Receiver.Meow/Newbe.Mahua.Receiver.Meow.sln

至于maildisk,由于使用的是.net core,所以需要自定义命令才能完成ci:

language: csharp
mono: none
dotnet: 2.1.502
script:
  - cd maildisk
  - dotnet build

ci会自动运行设置好的命令(它的docker系统现在是ubuntu的),如果所有命令都返回0,那么就表示测试通过,完全没有问题

总的来说,按照官方文档来写就好,没有太多的坑

自动发布release

既然上面的命令是编译,那编译好的文件可以自动发布出来吗?答案是肯定的

参考文档,我们可以稍微改造一下刚才的配置文件:

language: csharp
mono: none
dotnet: 2.1.502
script:
  - cd maildisk
  - dotnet publish -r win-x64
before_deploy:
  - cd maildisk/bin/Debug/netcoreapp2.1/
  - sudo apt-get -y install zip
  - zip -r ../../../../../win-x64.zip win-x64/publish/ -r
  - cd ../../../../../
deploy:
  provider: releases
  api_key: abcdabcdabcd
  file:
  - win-x64.zip
  skip_cleanup: true
  on:
    tags: true

可以看到,我把build直接改成了publish,这样就直接生成了目标平台的文件,然后安装了zip,使用它对生成的文件进行了打包,最后设置了在有tag更新时,自动发布一个release版本

这里就有一个明显的问题:由于是公开库,所以GitHub的api_key不可能直接明文放到配置文件中,我们需要在travis-ci上设置一个环境变量

打开GitHub,右上角头像进入设置:

左下角,开发者设置:

左下角,个人访问令牌:

生成新令牌:

只选择访问公共存储库这一项即可,填好令牌名称,点击生成:

把令牌记下来,记住,这个令牌只会给你看一次,这个页面关了就再也看不到了:

接着我们去travis,找到对应项目,点击右上角的更多选项–设置:

在环境变量里加上你刚刚的令牌即可,同时记下这个环境变量的名称:

最后我们把配置文件里的api_key直接用${你设置的变量名}替换就行了,像下面这样:

deploy:
  provider: releases
  api_key: ${GITHUB_TOKEN}
  file:
  - win-x64.zip
  skip_cleanup: true
  on:
    tags: true

测试release

打一个tag:

把最新代码,push上去,记得加上--tag参数把tag推上去:

最后就是等了,如果成功的话,我们会发现GitHub上自动出现了一个release:

3 Comments

  1. Microsoft Edge 18.17763 Microsoft Edge 18.17763 Windows 10 x64 Edition Windows 10 x64 Edition

    大佬,求教你一个事情。我的评论想分成三段 评论内容 名称和时间 操作系统和ip地址 但是我div这个标签不会用,试着用了几次,差点把显示操作系统功能都弄丢了(虽然自己找回来了)。该怎么操作。我的博客地址是www.xlovett.com functions文件地址链接:https://share.weiyun.com/5Tj3Ke8 密码:hadnac 修改 评论样式 434行,麻烦大佬了

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注