У меня есть 3 пакета python proj1
, proj12
и proj13
. Оба proj12
и proj13
зависят от proj1
(с from proj1.xxx import yyy
).Как использовать gitlab-ci для управления испытаниями/строительство взаимозависимых колес
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
, чтобы оно запустилось.
Все 3 проекта находятся в одной группе частных лиц gitlab.
Что такое gitlab Способ для этого?
- передать
proj1
колесо вproj12
с artifact- в этом случае я не знаю, как назвать/получить артефакт в
http://gitlab.me.com/group/proj12/.gitlab-ci.yml
? Это же gitlab, той же группы, но другой проект.
- в этом случае я не знаю, как назвать/получить артефакт в
- Используйте gitlab Secret Variable для хранения ssh_keys клонировать
proj2
вproj12/.gitlab-ci.yml
?- связанные с https://gitlab.com/gitlab-org/gitlab-ce/issues/4194
- это не извлекать выгоду из того факта, что
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
Ссылки, связанные с нашим вопросом:
- Разрешить доступ к сборке артефактов с помощью токенов с ограниченным доступом https://gitlab.com/gitlab-org/gitlab-ce/issues/19628
- «Люди должны быть abl е делиться ссылками на артефакты, основанные на мерзавца исх (филиал, бирка и т.п.), не зная конкретного сборки ID https://gitlab.com/gitlab-org/gitlab-ce/issues/4255
- https://docs.gitlab.com/ce/api/ci/builds.html#upload-artifacts-to-build
- ЗАГРУЗКИ зе-артефакты-файл https://docs.gitlab.com/ce/api/builds.html#download-the-artifacts-filehttps://gitlab.com/gitlab-org/gitlab-ce/issues/22957
Я затронул свой вопрос с вашими комментариями, я не знаю, что мы можем использовать артефакт, созданный в сборке одного проекта в '.gitlab-ci.yml' какого-либо другого проекта gitlab. – user3313834
@ user3313834 Вы поставляете артефакт как путь, он доступен в том же пути в вашей следующей сборке. Вы путь dist, поэтому просто выполните 'ls dist' в качестве первого шага в вашей следующей сборке, и вы это увидите. –
Да, я очень внимательно прочитал документацию артефакт gitlab, артефакт находится на пути ** того же контейнера **, доступного только по заданию ** того же ** gitlab-ci.yml в том же проекте. Нам нужен артефакт, созданный в proj1, доступный в proj12, другом проекте gitlab, другом репозитории git. Я, вероятно, пропустил что-то, но документацию вы указываете на артефакт с работой того же проекта. – user3313834