Проблема Gitlab ci с передачей артефактов в конвейер нисходящего потока с триггером и ключевыми словами
Я работаю над проектом с несколькими конвейерами и использую
trigger
ключевое слово для запуска нисходящего конвейера, но не может передавать артефакты, созданные в восходящем проекте. я использую
needs
чтобы получить артефакт, как показано ниже:
Блок Downstream Pipeline для получения артефактов:
needs:
- project: workspace/build
job: build
ref: master
artifacts: true
Блокировка Upstream Pipeline для запуска:
build:
stage: build
artifacts:
paths:
- ./policies
expire_in: 2h
only:
- master
script:
- echo 'Test'
allow_failure: false
triggerUpstream:
stage: deploy
only:
- master
trigger:
project: workspace/deploy
Но получаю ошибку:
This job depends on other jobs with expired/erased artifacts:
Понятия не имею, что не так, пожалуйста, помогите.
3 ответа
Похоже, существует проблема с совместным использованием артефактов между конвейерами, а также между проектами. Это известная ошибка, о которой здесь сообщалось:
https://gitlab.com/gitlab-org/gitlab/-/issues/228586
Там вы можете найти обходной путь, но, поскольку для этого нужно добавить токен доступа в проект, это не лучшее решение.
Задание «Сборка» восходящего конвейера настроено на хранение своих артефактов только в течение 2 часов (с
expire_in: 2h
линия. Ваш нисходящий конвейер должен быть запущен как минимум на 2 часа позже, чем были созданы артефакты, поэтому срок действия артефакта истек, и он был удален, создавая эту ошибку.
Чтобы решить эту проблему, вы можете либо обновить поле до того времени, в течение которого они будут активны (например, если вы знаете, что нисходящий конвейер будет работать до 5 дней спустя, установите его на 5 дней в течение 5 дней), либо повторно запустить задание сборки воссоздать артефакты.
Вы можете узнать больше о
expire_in
ключевое слово и артефакты в целом из документации
Это не проблема с просроченными артефактами, ошибка некорректна. В моем случае я могу загрузить артефакты в виде zip-архива непосредственно из пользовательского интерфейса при выполнении задания. Мой