我可不想把每一个小改动都推给。travis。yml和我对源代码所做的每一个小更改,以便运行构建。使用jenkins,您可以下载jenkins并在本地运行。特拉维斯会提供这样的东西吗?
注意:我已经看到了travis-ci命令行并下载了它,但它似乎 要做的就是调用他们的API,然后连接到我的GitHub回购,所以如果 我不推,重启最后的构建也没有关系。
我可不想把每一个小改动都推给。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历史记录干净。