python tox,创建rpm virtualenv,作为ci管道的一部分,不确定工作流中的位置
我正在研究Python应用程序如何也可以使用CI管道,但我不确定如何创建标准工作流 Jenkins用于进行初始存储库克隆,然后启动tox。基本上,这就是maven和/或msbuild获取依赖项包并生成的地方。。。。哪种毒物是通过pip进行的,所以这一切都很好python tox,创建rpm virtualenv,作为ci管道的一部分,不确定工作流中的位置,python,jenkins,packaging,tox,Python,Jenkins,Packaging,Tox,我正在研究Python应用程序如何也可以使用CI管道,但我不确定如何创建标准工作流 Jenkins用于进行初始存储库克隆,然后启动tox。基本上,这就是maven和/或msbuild获取依赖项包并生成的地方。。。。哪种毒物是通过pip进行的,所以这一切都很好 但是现在对于令人困惑的部分,管道的最后一部分是创建和上传包。开发人员可能会将创建的包上载到本地pip存储库,但也可能会创建一个部署包。在这种情况下,它需要是一个包含应用程序virtualenv的RPM。我已经使用rpmvenev手动创建了一
但是现在对于令人困惑的部分,管道的最后一部分是创建和上传包。开发人员可能会将创建的包上载到本地pip存储库,但也可能会创建一个部署包。在这种情况下,它需要是一个包含应用程序virtualenv的RPM。我已经使用rpmvenev手动创建了一个,但是不管它是如何创建的,如何将这样一个步骤添加到tox配置中?如果使用rpmvenv,它将创建自己的virtualenv,可以说这是一个自包含的命令。对于这个问题,我喜欢使用Unix原理。有一个工具可以很好地完成一件事,然后将其他工具组合在一起。Tox是专门为在一系列不同的python环境中运行测试而构建的,因此使用它为您构建一个deb/rpm/etc,我觉得有点滥用该工具。使用tox运行所有测试可能更容易,然后根据结果,在管道中执行另一个步骤,为刚刚测试的内容构建一个包 在撰写本文时,Jenkins 2.x是一个相当新的版本,在构建管道方面似乎要好得多。BuildBot正在进行大量的开发,并且已经可以很容易地为此构建良好的管道 我们在我的工作中所做的是
- AWS中的Buildbot,在PR上从Github接收推送通知
- 这启动了一个docker容器,该容器拉入当前代码并运行Tox(py.test、flake8以及量角器和jasmine测试)
- 如果tox步骤恢复正常,则启动另一个docker容器来构建deb包
- 把deb包推到S3,让我们来处理告诉那些机器更新的问题
- 因为它是Python的,所以我们更容易处理,但Jenkins也可以。无论如何,这是整个管道的控制器
- Docker,因为每个构建都应该与其他构建完全隔离
- 让光荣的试跑者来处理所有这些细节
- 构建包。RPM,DEB,tar.gz,随便什么。非常可配置且易于编写脚本
- 使管理debian存储库变得更容易,尤其是将其升级到S3