我可不想把每一个小改动都推给。travis。yml和我对源代码所做的每一个小更改,以便运行构建。使用jenkins,您可以下载jenkins并在本地运行。特拉维斯会提供这样的东西吗?
注意:我已经看到了travis-ci命令行并下载了它,但它似乎 要做的就是调用他们的API,然后连接到我的GitHub回购,所以如果 我不推,重启最后的构建也没有关系。
我可不想把每一个小改动都推给。travis。yml和我对源代码所做的每一个小更改,以便运行构建。使用jenkins,您可以下载jenkins并在本地运行。特拉维斯会提供这样的东西吗?
注意:我已经看到了travis-ci命令行并下载了它,但它似乎 要做的就是调用他们的API,然后连接到我的GitHub回购,所以如果 我不推,重启最后的构建也没有关系。
当前回答
更新:我现在有一个完整的交钥匙,全能的答案,见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帮助文档已经删除。我找到的所有博客和文章都是基于这个。新的“调试”模式对我没有吸引力,因为我想避免排队时间和Travis基础设施,直到我对我的更改有了一定的信心。
在我的情况下,我正在更新一个Puppet模块,我不是一个Puppet专家,也不是特别有经验的Ruby, Travis,或他们的生态系统。但是,通过仔细检查Travis CI构建日志,我根据本文和其他地方介绍的技巧和想法构建了一个可行的测试映像。
我无法在CI日志中找到与名称匹配的最近的图像(例如,我可以找到travisci/ CI -sardonyx,但找不到任何带有“xenial”或相同构建名称的图像)。从日志中显示,图像现在通过AMQP传输,而不是我更熟悉的机制。
我找到了一个映像travsci/ubuntu-ruby:16.04,它与我针对特定情况的操作系统相匹配。它没有Travis CI中使用的所有组件,因此我基于此构建了一个新的CI,其中一些组件添加到映像中,另一些组件根据需要在运行时添加到容器中。
所以我不能提供一个明确的程序,抱歉。但我所做的,基本上可以归结为:
Find a recent Travis CI image in Docker Hub matching your target OS as closely as possible. Clone the repository to a build directory, and launch the container with the build directory mounted as a volume, with the working directory set to the target volume Now the hard work: go through the Travis build log and set up the environment. In my case, this meant setting up RVM, and then using bundle to install the project's dependencies. RVM appeared to be already present in the Travis environment but I had to install it; everything else came from reproducing the commands in the build log. Run the tests. If the results don't match what you saw in the Travis CI logs, go back to (3) and see where to go. Optionally, create a reusable image. Dev and test locally and then push and hopefully your Travis results will be as expected.
我知道这是不具体的,可能是显而易见的,你的里程肯定会有所不同,但希望这对某些人有用。我的图像的Dockerfile和README在GitHub上供参考。
Travis-ci提供了一个新的基于容器的基础设施,它使用docker。如果您试图通过在本地复制travis-ci构建来排除故障,这可能非常有用。这是从特拉维斯·CI的文档中截取的。
在Docker映像中进行本地故障排除
如果在跟踪构建中的确切问题时遇到困难,在本地运行构建通常会有所帮助。要做到这一点,你需要使用我们基于容器的基础设施(例如,在你的. Travis .yml中有sudo: false),并知道你在Travis CI上使用的是哪个Docker映像。
本地运行基于容器的Docker镜像
下载并安装Docker引擎。 从Docker Hub中选择一个映像。如果您不使用特定于语言的映像,则选择ci-ruby。打开终端,使用镜像URL启动交互式Docker会话: Docker运行- travisci/ubuntu-ruby:18.04 /bin/bash 切换到travis用户: Su - Travis 将git存储库克隆到映像的/文件夹中。 手动安装任何依赖项。 手动运行Travis CI构建命令。
我不确定你在本地运行特拉维斯的最初原因是什么,如果你只是想玩它,那么停止阅读这里,因为它与你无关。
如果您已经有托管Travis的经验,并且希望在自己的数据中心获得相同的经验,请继续阅读。
自2014年12月Travis CI提供企业内部版本。
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
定价也是文章的一部分:
授权是按座位进行的,每个授权包括20个用户。每个许可证的定价为6,000美元起,包括20个用户和5个并发构建。这里有一个8500美元的无限版本的高级选项。
可以通过一个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构建环境
此过程允许您在计算机上完全重现任何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环境,它看起来很复杂,可能这泄露了内存