Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用gitlab ci管理相互依赖的轮子的测试/构造_Python_Continuous Integration_Gitlab_Gitlab Ci_Python Wheel - Fatal编程技术网

Python 如何使用gitlab ci管理相互依赖的轮子的测试/构造

Python 如何使用gitlab ci管理相互依赖的轮子的测试/构造,python,continuous-integration,gitlab,gitlab-ci,python-wheel,Python,Continuous Integration,Gitlab,Gitlab Ci,Python Wheel,我有3个python包proj1,proj12和proj13。proj12和 proj13取决于proj1(使用proj1.xxx导入yyy的) 这3个项目位于一个私有gitlab实例上,每个项目都有自己的.gitlab ci 在proj1http://gitlab.me.com/group/proj1/.gitlab-ci.yml我们运行unittest 并创建一个作为工件公开的轮子:: # http://gitlab.me.com/group/proj1/.gitlab-ci.yml ima

我有3个python包
proj1
proj12
proj13
proj12
proj13
取决于
proj1
(使用proj1.xxx导入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
对于proj12proj13,例如。
http://gitlab.me.com/group/proj12/.gitlab-ci.yml
我们想运行测试 也是,但我需要安装
proj1
wheel使其运行

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

gitlab是如何做到这一点的

  • proj1
    轮通过
    • 在这种情况下,我不知道如何调用/获取工件
      http://gitlab.me.com/group/proj12/.gitlab-ci.yml
      ?这是同一个gitlab 同一组,但不同的项目
  • 使用gitlab Secret变量在
    proj12/.gitlab ci.yml
    中存储克隆
    proj2
    • 有关
    • 这并没有利用
      proj1
      proj12
      proj13
      属于同一个gitlab和同一个组,即进行构建的人 对于一个项目,作为执行其他项目的凭据。所有3个都由用户专用令牌连接
我尽量避免部署类似于devpi或pypiserver的解决方案

因此,我正在研究在proj12
.gitlab ci.yml
中编写什么来获取
dist/proj1-0.42-py2-none-any.whl
proj1先前版本的控制盘:

# 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引用(分支、标记等)的工件链接,而不需要知道特定的构建ID
  • 下载工件文件

    • 您有两种方法可以做到这一点:

      • (仅在同一项目内工作)
      • 使用预先安装在git作业中的包构建docker映像,将其存储在内置注册表中,并使用它在其他项目中运行Build
      • 克隆存储库

      我建议将其作为工件传递,因为这样您就可以在您正在运行的管道中准确地构建它。至于克隆,恐怕您在克隆子模块时不需要任何解决方法,但对于克隆其他存储库,我将使用ssh部署密钥,因为它与repo连接,而不是像私有令牌那样的用户。

      我影响了m我的问题和你的评论一样,我不知道我们可以在其他一些gitlab项目的
      .gitlab ci.yml
      中使用在一个项目的构建中创建的工件。@user3313834如果将工件作为路径提供,它可以在下一个构建中的同一路径中使用。你的路径是dist,因此只需将
      ls dist
      作为你的第一步ext build,您将看到它。是的,我已经非常仔细地阅读了工件gitlab文档,工件位于同一容器的路径中,只有同一项目中相同gitlab-ci.yml的作业才能访问。我们需要在proj1中创建的工件,可以在proj12中访问,不同的gitlab项目,不同的git存储库。我可能不知道除了您指向的文档之外,其他内容与同一项目的作业共享工件。@user3313834 aaah,我错过了关于同一项目的部分。正确。尽管这提醒了我,我忘记了自定义docker容器。