我可不想把每一个小改动都推给。travis。yml和我对源代码所做的每一个小更改,以便运行构建。使用jenkins,您可以下载jenkins并在本地运行。特拉维斯会提供这样的东西吗?
注意:我已经看到了travis-ci命令行并下载了它,但它似乎 要做的就是调用他们的API,然后连接到我的GitHub回购,所以如果 我不推,重启最后的构建也没有关系。
我可不想把每一个小改动都推给。travis。yml和我对源代码所做的每一个小更改,以便运行构建。使用jenkins,您可以下载jenkins并在本地运行。特拉维斯会提供这样的东西吗?
注意:我已经看到了travis-ci命令行并下载了它,但它似乎 要做的就是调用他们的API,然后连接到我的GitHub回购,所以如果 我不推,重启最后的构建也没有关系。
当前回答
可以通过一个bounce主机SSH到Travis CI环境。该特性不是在Travis CI中构建的,但是可以通过以下步骤实现。
On the bounce host, create travis user and ensure that you can SSH to it. Put these lines in the script: section of your .travis.yml (e.g. at the end). - 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 Where $bouncehostip is the IP/host of your bounce host, and $sshpassword is your defined SSH password. These variables can be added as encrypted variables. Push the changes. You should be able to make an SSH connection to your bounce host.
来源:Shell到Travis CI构建环境。
下面是完整的例子:
# 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在GitHub。
请参见:如何为调试重现一个travis-ci构建环境
其他回答
使用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),也不小。
更新:我现在有一个完整的交钥匙,全能的答案,见https://stackoverflow.com/a/49019950/300224。只花了3年时间就弄明白了!
根据Travis文档:https://github.com/travis-ci/travis-ci,有一个混合的项目,共同提供我们所了解和喜爱的Travis CI web服务。下面的项目子集似乎允许使用.travis进行本地make测试功能。Yml在你的项目中:
travis-build
Travis-build创建构建 为每个作业编写脚本。它从.travis中获取配置。Yml文件和 创建bash脚本,然后在构建环境中通过 travis-worker。
travis-cookbooks
Travis-cookbooks拥有 用于提供构建环境的Chef烹饪书。
travis-worker
工人负责 在干净的环境中运行构建脚本。它将日志输出流发送到 travis-log和推送状态更新(构建开始/完成) travis-hub。
(其他子项目负责与GitHub、他们的web界面、电子邮件和他们的API通信。)
我不确定你在本地运行特拉维斯的最初原因是什么,如果你只是想玩它,那么停止阅读这里,因为它与你无关。
如果您已经有托管Travis的经验,并且希望在自己的数据中心获得相同的经验,请继续阅读。
自2014年12月Travis CI提供企业内部版本。
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
定价也是文章的一部分:
授权是按座位进行的,每个授权包括20个用户。每个许可证的定价为6,000美元起,包括20个用户和5个并发构建。这里有一个8500美元的无限版本的高级选项。
使用wwtd (travis会做什么)ruby gem在本地机器上运行测试,大致就像它们在travis上运行一样。
它将重新创建构建矩阵并运行每个配置,在推送之前检查设置。
gem i wwtd
wwtd
可以通过一个bounce主机SSH到Travis CI环境。该特性不是在Travis CI中构建的,但是可以通过以下步骤实现。
On the bounce host, create travis user and ensure that you can SSH to it. Put these lines in the script: section of your .travis.yml (e.g. at the end). - 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 Where $bouncehostip is the IP/host of your bounce host, and $sshpassword is your defined SSH password. These variables can be added as encrypted variables. Push the changes. You should be able to make an SSH connection to your bounce host.
来源:Shell到Travis CI构建环境。
下面是完整的例子:
# 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在GitHub。
请参见:如何为调试重现一个travis-ci构建环境