繁体   English   中英

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

[英]How to use gitlab-ci to manage test/construction of interdependent wheels

我有3个python包proj1proj12proj13 proj12proj13依赖于proj1from proj1.xxx import yyy )。

这3个项目位于私有gitlab实例上,每个实例都有自己的.gitlab-ci

proj1 http://gitlab.me.com/group/proj1/.gitlab-ci.yml我们运行unittest并创建一个作为工件暴露的轮子::

# 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

对于例如http://gitlab.me.com/group/proj12/.gitlab-ci.yml proj12proj13 ,我们也想运行测试,但我需要安装proj1 wheel才能运行它。

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

什么是gitlab方法呢?

  • 使用神器proj1轮传递给proj12
    • 在这种情况下,我不知道如何在http://gitlab.me.com/group/proj12/.gitlab-ci.yml调用/获取工件? 它是同一个gitlab,同一个组,但是一个不同的项目。
  • 使用gitlab 秘密变量来存储ssh_keys克隆proj2proj12/.gitlab-ci.yml
    • https://gitlab.com/gitlab-org/gitlab-ce/issues/4194相关
    • 这并没有利用proj1proj12proj13属于同一个gitlab和同一组的事实, proj12一个项目构建的人作为执行其他项目的凭据。 所有3个都由用户私人令牌连接。

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

所以我正在寻找在proj12 .gitlab-ci.yml写什么来从proj1先例build ::获取dist/proj1-0.42-py2-none-any.whl

# 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

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

你有两种方法可以做到:

  • 使用工件从先前构建传递对象 (仅在同一项目内部工作)
  • 使用预先安装在git作业中的软件包构建docker镜像,将其存储在内置的注册表中,并使用它在其他项目中运行build。
  • 克隆存储库

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM