Python 如何使用gitlab ci管理相互依赖的轮子的测试/构造
我有3个python包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
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
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
对于proj12和proj13,例如。
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容器。