我刚加入了一个项目,我是travis-ci的新手。我宁愿不必将每一个小改动都推到.travis.yml以及我为源代码运行构建所做的每一点改变。使用jenkins,您可以下载jenkins并在本地运行。特拉维斯提供这样的东西吗?
注意:我已经看过travis-ci cli并下载了它,但它似乎只是调用它们的API,然后连接到我的github repo,所以如果我不推送,重启就没关系最后的构建。
此过程允许您在计算机上完全复制任何Travis构建作业。此外,您可以随时中断该过程并进行调试。下面是一个例子,我完美地重现了job #191.1 on php-school/cli-menu 的结果。
参考:https://docs.travis-ci.com/user/common-build-problems/
BUILDID="build-$RANDOM"
INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0"
docker run --name $BUILDID -dit $INSTANCE /sbin/init
docker exec -it $BUILDID bash -l
现在您已进入Travis环境。运行su - travis
开始。
这个步骤定义明确,但更繁琐且手动。您将找到Travis在环境中运行的所有命令。要执行此操作,请在右列中查找具有0.03s标记的所有内容。
在左侧,您将看到实际的命令。按顺序运行这些命令。
现在是运行history
命令的好时机。您可以重新启动该进程并重播这些命令,以针对更新的代码库运行相同的测试。
ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
然后cat ~/.ssh/id_rsa.pub
和click here添加一个键git pull
加载来自开发盒的提交,然后再将它们推送到GitHub.travis.yml
的。Travis-ci提供了一个使用docker的基于容器的新基础架构。如果您尝试通过在本地再现它来解决travis-ci构建问题,这可能非常有用。这取自Travis CI的documentation。
如果您在跟踪构建中的确切问题时遇到问题,那么在本地运行构建通常会有所帮助。为此,您需要使用我们基于容器的基础架构(即,在sudo: false
中使用.travis.yml
),并了解您在Travis CI上使用的Docker镜像。
ci-ruby
。打开终端并使用图像URL启动交互式Docker会话:
docker run -it travisci/ubuntu-ruby:18.04 /bin/bash
travis
用户:
su - travis
/
文件夹中。更新:我现在有一个完整的交钥匙,一体化的答案,请参阅https://stackoverflow.com/a/49019950/300224。只花了3年时间搞清楚!
根据特拉维斯的文件:https://github.com/travis-ci/travis-ci有一个项目的混合物串通交付我们知道和喜爱的Travis CI网络服务。以下项目子集似乎允许在项目中使用make test
的本地.travis.yml
功能:
travis-build为每个作业创建构建脚本。它从.travis.yml
文件中获取配置并创建一个bash
脚本,然后由travis-worker在构建环境中运行。
travis-cookbooks持有用于提供构建环境的Chef烹饪书。
travis-worker负责在干净的环境中运行构建脚本。它将日志输出流式传输到travis-logs并将状态更新(构建开始/结束)推送到travis-hub。
(其他子项目负责与GitHub,他们的Web界面,电子邮件及其API进行通信。)
与Scott McLeod相似,但这也会生成一个bash脚本来运行.travis.yml中的步骤。
# 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
使用wwtd (what would travis do) ruby gem在本地计算机上运行测试,就像在travis上运行一样。
它将重新创建构建矩阵并运行每个配置,非常适合在推送之前进行完整性检查设置。
gem i wwtd
wwtd
我不确定你在本地运行Travis的原因是什么,如果你只是想玩它,那就停止在这里阅读,因为这对你来说无关紧要。
如果您已经拥有托管Travis的经验并希望在自己的数据中心获得相同的体验,请继续阅读。
自2014年12月起,Travis CI提供企业内部部署版本。
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
定价也是文章的一部分:
许可是按席位完成的,每个许可包括20个用户。每个许可证的起价为6,000美元,其中包括20个用户和5个并发版本。这是一个高级选项,无限制,8,500美元。
tl; dr使用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。
我想检查为什么one of the tests in my build失败了,因为我不能在当地得到错误。
工作。
实际工作的是使用Troubleshooting Locally in a Docker Image docs页面中指定的图像。在我的情况下,它是travisci/ci-garnet:packer-1512502276-986baf0
。
我能够按照travise compile
描述的步骤添加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
来自.travis.yml
的所有内容都按预期执行(安装依赖项,测试运行,......)。
请注意,在运行bash ci.sh
之前,我必须在--branch\=\'\'\
中将--branch\=master\
更改为sed -i ...
(请参阅第二个到最后一个ci.sh
命令)。
如果这不起作用,则下面的命令将有助于识别目标行号,您可以手动编辑该行。
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$
没工作。
按照这个问题的接受答案,但没有找到travis-ci-garnet-trusty-1512502259-986baf0
在instance
提到的图像(https://hub.docker.com/u/travisci/)。
建立worker version指向travis-ci/worker commit及其travis-worker-install引用quay.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
绝对不是Trusty(Ubuntu 14.04),也不小。
您可以尝试Trevor,它使用Docker来运行您的Travis构建。
从它的描述:
我经常需要为多个版本的Node.js运行测试。但是我不想使用n / nvm手动切换版本或者只是为了运行测试而将代码推送到Travis CI。
这就是我创造特雷弗的原因。它读取.travis.yml并在您请求的所有版本中运行测试,就像Travis CI一样。现在,您可以在推送之前进行测试并保持您的git历史记录清洁。
可以通过退回主机SSH到Travis CI环境。该功能不是在Travis CI中构建的,但可以通过以下步骤实现。
travis
用户并确保您可以SSH到它。script:
的.travis.yml
部分(例如在最后)。
- echo travis:$sshpassword | sudo chpasswd
- sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
- sudo service ssh restart
- sudo apt-get install sshpass
- sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travis@$bouncehostip
其中$bouncehostip
是您的退回主机的IP /主机,$sshpassword
是您定义的SSH密码。这些变量可以添加为encrypted variables。资料来源:Shell into Travis CI Build Environment。
这是完整的例子:
# use the new container infrastructure
sudo: required
dist: trusty
language: python
python: "2.7"
script:
- echo travis:$sshpassword | sudo chpasswd
- sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
- sudo service ssh restart
- sudo apt-get install sshpass
- sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travisci@$bouncehostip
见:c-mart/travis-shell
at GitHub。
另见:How to reproduce a travis-ci build environment for debugging