如何使用gitlab-ci来管理相互依赖的车轮的测试/构造

时间:2017-01-07 03:07:54

标签: python continuous-integration gitlab gitlab-ci python-wheel

我有3个python包proj1proj12proj13proj12和。proj13 proj1取决于from proj1.xxx import yyy.gitlab-ci)。

3个项目位于私有gitlab实例上,每个实例都有自己的http://gitlab.me.com/group/proj1/.gitlab-ci.yml

proj1 # http://gitlab.me.com/group/proj1/.gitlab-ci.yml image: python:2 mytest: artifacts: paths: - dist script: - apt-get update -qy; apt-get install -y python-dev python-pip - pip install -r requirements.txt - python setup.py test - python setup.py bdist_wheel look: stage: deploy script: - ls -lah dist 中,我们运行unittest 并创建一个暴露为工件的轮子::

http://gitlab.me.com/group/proj12/.gitlab-ci.yml

对于 proj12 proj13 ,例如 proj1我们想要进行测试 我也需要安装proj1轮才能让它运行。

所有3个项目都在同一个gitlab私人组中。

gitlab 的方法是什么?

  • 通过artifactproj12轮传递给http://gitlab.me.com/group/proj12/.gitlab-ci.yml
    • 在这种情况下,我不知道如何调用/获取工件 proj2?它是同一个gitlab, 同一组,但是一个不同的项目。
  • 使用gitlab 秘密变量ssh_keys存储到proj12/.gitlab-ci.yml中克隆proj1
    • https://gitlab.com/gitlab-org/gitlab-ce/issues/4194
    • 相关
    • 这并不是因为proj12proj13.gitlab-ci.yml这一事实 dist/proj1-0.42-py2-none-any.whl属于同一个gitlab和同一组,即构建的人 一个项目作为完成其他项目的凭据。所有3个都由用户私人令牌连接。

我尽量避免必须像解决方案那样部署devpi或pypiserver。

所以,我正在查看 proj12 # http://gitlab.me.com/group/proj12/.gitlab-ci.yml image: python:2 mytest12: script: - apt-get update -qy; apt-get install -y python-dev python-pip - pip install -r requirements.txt - pip install . - => some way here to get the proj1 wheel - pip install proj1-0.42-py2-none-any.whl - python setup.py test 中要写的内容 来自proj1先例build ::

的{{1}}轮
{{1}}

与我们的问题相关的链接:

1 个答案:

答案 0 :(得分:1)

你有两种方法可以做到:

我建议传递为一个工件,从那时起你将完全构建在正在运行的管道中。至于克隆,AFAIK在克隆子模块时不需要任何解决方法,但是为了克隆其他存储库,我会使用ssh deploy key,因为它与repo连接而不是像私有令牌这样的用户。