我正在开发的项目是一个jQuery插件。我成功地让Travis CI使用Gulp / NodeJS构建了一个测试项目。现在我正在尝试找出用于提升版本号的工作流程。
在TeamCity和MyGet中,CI服务器中有一个设置,用于形成版本号模式,该模式在每个构建时自动递增,构建脚本可以使用它来更新部署文件中的版本并标记Git存储库。但是,在Travis CI的免费版本中,似乎根本不是版本控制的选项。
我已经阅读了几篇关于使用Travis CI,here,here和here进行持续部署的文章,但他们都没有提到版本控制的主题。显然,需要为发布版本更改版本。那我在这里错过了什么?
我在阅读文档时注意到的另一个问题是它提到Travis CI无法更新GitHub存储库。难道这并不意味着它无法创建Git标签吗?
如果无法从Travis CI获得版本,那么这种插件的发布过程的典型工作流程是什么?版本控制总是手动完成吗?如果是这样,怎么会有"持续部署"?
答案 0 :(得分:5)
在开始运行.travis.yml
文件中的说明之前,Travis将设置一堆environment variables(在构建项目的VM中),其中包含有关构建的各种信息,例如正在建立什么分支等等。
你可能想要其中一个:
TRAVIS_BUILD_NUMBER
:当前版本的编号(例如,“4”)。TRAVIS_JOB_NUMBER
:当前作业的编号(例如“4.1”)。但如果您无法控制存储库,那么任何是非常困难的,因为您需要将.travis.yml
文件上传到根目录中您的源代码文件夹,否则Travis将不知道该怎么做。
答案 1 :(得分:4)
如果您认为每个公关都必须在不考虑此类更改的影响的情况下结束您的最终用户,那么您的版本号没有任何意义。
您不会让您的用户知道它是否是破坏兼容性或错误修复的重大更改。你不允许他在不担心向后兼容的情况下获得更新。
目前,提交ID是您的版本号。
如果您想为版本号赋予意义,那么您必须考虑拉取请求对最终用户(http://semver.org/)的影响。您必须为特定PR或一组PR选择版本号。
基本上,由于您必须“想”某个特定版本的特定版本号,因此无法自动完成此过程。
发布/标记创建是可行的方法:)
答案 2 :(得分:4)
使用bumped进行发布版本控制。如果您对master中的更改感到满意,请运行:
bumped release <major|minor|patch>
直接或通过发布PR推送更改后,您可以检查Travis CI中是否存在新标记,并自动将包发布到注册表。
答案 3 :(得分:0)
您可以通过设置一个脚本来完成此操作,该脚本将创建一个〜/ .netrc文件来访问存储库。在此文件中,您可以指定以下内容:
machine https://github.com/xxx/yyy.git
login <blah>
您可以传递github访问令牌,而不是输入您的凭据。您可以使用travis encrypt
在.travis.yml文件中注册它,并导出变量以供脚本使用。从脚本中,您可以发出常规的git命令,例如:
git add <some file>
git commit -m "This is $TRAVIS_BUILD_NUMBER"
git push origin <branch>