我可不想把每一个小改动都推给。travis。yml和我对源代码所做的每一个小更改,以便运行构建。使用jenkins,您可以下载jenkins并在本地运行。特拉维斯会提供这样的东西吗?

注意:我已经看到了travis-ci命令行并下载了它,但它似乎 要做的就是调用他们的API,然后连接到我的GitHub回购,所以如果 我不推,重启最后的构建也没有关系。


当前回答

我不确定你在本地运行特拉维斯的最初原因是什么,如果你只是想玩它,那么停止阅读这里,因为它与你无关。

如果您已经有托管Travis的经验,并且希望在自己的数据中心获得相同的经验,请继续阅读。

自2014年12月Travis CI提供企业内部版本。

http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/

定价也是文章的一部分:

授权是按座位进行的,每个授权包括20个用户。每个许可证的定价为6,000美元起,包括20个用户和5个并发构建。这里有一个8500美元的无限版本的高级选项。

其他回答

类似于Scott McLeod的,但它也生成一个bash脚本来运行.travis.yml中的步骤。

在Docker中使用生成的Bash脚本进行本地故障排除

# choose the image according to the language chosen in .travis.yml
$ docker run -it -u travis quay.io/travisci/travis-jvm /bin/bash

# now that you are in the docker image, switch to the travis user
sudo - travis

# Install a recent ruby (default is 1.9.3)
rvm install 2.3.0
rvm use 2.3.0

# Install travis-build to generate a .sh out of .travis.yml
cd builds
git clone https://github.com/travis-ci/travis-build.git
cd travis-build
gem install travis
# to create ~/.travis
travis version
ln -s `pwd` ~/.travis/travis-build
bundle install

# Create project dir, assuming your project is `AUTHOR/PROJECT` on GitHub
cd ~/builds
mkdir AUTHOR
cd AUTHOR
git clone https://github.com/AUTHOR/PROJECT.git
cd PROJECT
# change to the branch or commit you want to investigate
travis compile > ci.sh
# You most likely will need to edit ci.sh as it ignores matrix and env
bash ci.sh

我不确定你在本地运行特拉维斯的最初原因是什么,如果你只是想玩它,那么停止阅读这里,因为它与你无关。

如果您已经有托管Travis的经验,并且希望在自己的数据中心获得相同的经验,请继续阅读。

自2014年12月Travis CI提供企业内部版本。

http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/

定价也是文章的一部分:

授权是按座位进行的,每个授权包括20个用户。每个许可证的定价为6,000美元起,包括20个用户和5个并发构建。这里有一个8500美元的无限版本的高级选项。

此过程允许您在计算机上完全重现任何Travis构建作业。此外,您可以在任何时候中断该过程并进行调试。下面是一个例子,我在php-school/cli-menu上完美地复制了作业#191.1的结果 .

先决条件

你在GitHub上有公共回购 你至少对特拉维斯进行了一次调查 您已经在计算机上设置了Docker

设置构建环境

参考:https://docs.travis-ci.com/user/common-build-problems/

创建自己的临时构建ID BUILDID = "建设-随机”美元 查看构建日志,打开WORKER INFORMATION的show more按钮,找到INSTANCE行,将其粘贴到这里并运行(将冒号后的标记替换为最新可用的标记): 实例= " travisci / ci-garnet:封隔器- 1512502276 - 986 - baf0” 运行无头服务器 docker运行——name $BUILDID -dit $INSTANCE /sbin/init 运行附加的客户端 docker execute - $BUILDID bash -l

运行作业

现在你在Travis环境中。运行su - travis开始。

这个步骤定义很好,但是比较繁琐,需要手工操作。您将发现Travis在环境中运行的每个命令。要做到这一点,请在右列中查找带有0.03s这样标签的所有内容。

在左边,您将看到实际的命令。按顺序运行这些命令。

结果

现在是运行history命令的好时机。您可以重新启动流程并重放这些命令,以针对更新的代码库运行相同的测试。

如果你的repo是私有的:ssh-keygen -t rsa -b 4096 -C " your EMAIL REGISTERED IN GITHUB"然后cat ~/.ssh/id_rsa。Pub和点击这里添加一个密钥 供你参考:在你把它们推送到GitHub之前,你可以从docker内部的git拉到你的开发箱中加载提交 如果你想改变Travis运行的命令,那么你有责任弄清楚如何将其转换回工作的. Travis .yml。 我不知道如何清理Docker环境,它看起来很复杂,可能这泄露了内存

使用https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image和https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli指定的镜像。

编辑2019-12-06

#故障排除-local -in-a-docker-image部分被#running-builds-in-debug-mode所取代,它还描述了如何SSH到在调试模式下运行的作业。

编辑2019-07-26

#troubleshooting-local -in-a-docker-image部分不再是文档的一部分;这是为什么

https://github.com/travis-ci/docs-travis-ci-com/issues/2342 https://blog.travis-ci.com/2018-10-04-combining-linux-infrastructures https://blog.travis-ci.com/2018-11-30-announcing-xenial-build-environment-for-enterprise

但是,它仍然在git历史记录中:https://github.com/travis-ci/docs-travis-ci-com/pull/2193。

在https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661上寻找(相当旧的,找不到更新的)图像版本。


我想检查为什么我的构建中的一个测试失败了,并出现了一个我没有在本地得到的错误。

工作。

真正起作用的是使用Docker image文档页面中“故障排除本地”中指定的图像。在我的例子中,它是travisci/ci-garnet:packer-1512502276-986baf0。

我能够按照https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli中描述的步骤添加旅行编译。

dm@z580:~$ docker run --name travis-debug -dit travisci/ci-garnet:packer-1512502276-986baf0 /sbin/init
dm@z580:~$ docker images
REPOSITORY                       TAG                          IMAGE ID            CREATED             SIZE
travisci/ci-garnet               packer-1512502276-986baf0    6cbda6a950d3        11 months ago       10.2GB
dm@z580:~$ docker exec -it travis-debug bash -l
root@912e43dbfea4:/# su - travis
travis@912e43dbfea4:~$ cd builds/
travis@912e43dbfea4:~/builds$ git clone https://github.com/travis-ci/travis-build
travis@912e43dbfea4:~/builds$ cd travis-build
travis@912e43dbfea4:~/builds/travis-build$ mkdir -p ~/.travis
travis@912e43dbfea4:~/builds/travis-build$ ln -s $PWD ~/.travis/travis-build
travis@912e43dbfea4:~/builds/travis-build$ gem install bundler
travis@912e43dbfea4:~/builds/travis-build$ bundle install --gemfile ~/.travis/travis-build/Gemfile
travis@912e43dbfea4:~/builds/travis-build$ bundler binstubs travis
travis@912e43dbfea4:~/builds/travis-build$ cd ..
travis@912e43dbfea4:~/builds$ git clone --depth=50 --branch=master https://github.com/DusanMadar/PySyncDroid.git DusanMadar/PySyncDroid
travis@912e43dbfea4:~/builds$ cd DusanMadar/PySyncDroid/
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ ~/.travis/travis-build/bin/travis compile > ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ sed -i 's,--branch\\=\\\x27\\\x27,--branch\\=master,g' ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ bash ci.sh

特拉维斯的一切。Yml按预期执行(安装依赖项,运行测试,…)。

注意,在运行bash ci.sh之前,我必须将——branch\=\'\'\改为——branch\=master\(请参阅倒数第二个sed -i…命令)。

如果这不起作用,下面的命令将帮助识别目标行号,您可以手动编辑该行。

travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ cat ci.sh | grep -in branch
840:    travis_cmd git\ clone\ --depth\=50\ --branch\=\'\'\ https://github.com/DusanMadar/PySyncDroid.git\ DusanMadar/PySyncDroid --echo --retry --timing
889:export TRAVIS_BRANCH=''
899:export TRAVIS_PULL_REQUEST_BRANCH=''
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$

没有工作。

遵循这个问题的公认答案,但没有 在https://hub.docker.com/u/travisci/上找到实例提到的映像(travis-ci-garnet-trusty-1512502259-986baf0)。

Build worker version指向travis-ci/worker commit及其travis-worker-install引用码头。Io /travisci/镜像注册表。所以我试了一下。

dm@z580:~$ docker run -it -u travis quay.io/travisci/travis-python /bin/bash
travis@370c23a773c9:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:   precise
travis@370c23a773c9:/$
dm@z580:~$ docker images 
REPOSITORY                       TAG                          IMAGE ID            CREATED             SIZE
quay.io/travisci/travis-python   latest                       753a216d776c        3 years ago         5.36GB

绝对不是可靠的(Ubuntu 14.04),也不小。

您可以尝试Trevor,它使用Docker运行Travis构建。

从它的描述来看:

我经常需要为多个版本的Node.js运行测试。但我不想使用n/nvm手动切换版本,也不想仅仅为了运行测试而将代码推到Travis CI。 所以我创造了特雷弗上面写着。travis。yml并在您请求的所有版本中运行测试,就像Travis CI一样。现在,您可以在推送前进行测试,并保持git历史记录干净。