#amazon-web-services #gitlab #gitlab-ci #build-automation #gitlab-ci-runner
#amazon-web-services #gitlab #gitlab-ci #автоматизация сборки #gitlab-ci-runner
Вопрос:
Я пытаюсь создать конвейер автоматизации для загрузки данных. У меня есть сценарий, описанный ниже:
stages
- stage1
- stage2
job1:
stage: stage1
script:
- echo "stage 1 job 1"
job2:
stage: stage1
script:
- echo "stage 1 job 2"
job3:
stage: stage1
script:
- echo "stage 1 job 3"
job4:
stage: stage1
script:
- echo "stage 1 job 4"
Я хочу запустить job1 и job2 параллельно на одном этапе. Итак, после успешного выполнения заданий 1 и 2
- job1 вызовет / запустит job3. это означает, что job3 запустится автоматически при успешном выполнении job1
- job2 вызовет / запустит job4, что означает, что job4 запустится автоматически при успешном выполнении job2
Я пишу конвейер в .gitlab-ci.yml.
Кто-нибудь может помочь мне реализовать это?
Ответ №1:
Строгая реализация ваших требований невозможна (насколько мне известно), задания 3 и 4 должны быть на отдельном этапе (хотя планируется поддержка их размещения на одном этапе). Для ясности: другие функциональные требования могут быть выполнены, т.е.:
- job1 и job2 запускаются параллельно
- job1 запустит job3 (немедленно, не дожидаясь завершения job2)
- job2 запустит job4 (немедленно, не дожидаясь завершения job1)
Ключ использует ключевое слово needs для преобразования конвейера в ориентированный ациклический граф:
stages:
- stage-1
- stage-2
job-1:
stage: stage-1
needs: []
script:
- echo "job-1 started"
- sleep 5
- echo "job-1 done"
job-2:
stage: stage-1
needs: []
script:
- echo "job-2 started"
- sleep 60
- echo "job-2 done"
job-3:
stage: stage-2
needs: [job-1]
script:
- echo "job-3 started"
- sleep 5
- echo "job-3 done"
job-4:
stage: stage-2
needs: [job-2]
script:
- echo "job-4 started"
- sleep 5
- echo "job-4 done"
Как вы можете видеть на скриншоте, задание 3 запущено, хотя задание 2 все еще выполняется.
Комментарии:
1. Привет @mafor спасибо за ваш ответ. И это сработало для меня в первый раз. Но позже, когда я пытаюсь это реализовать, он выдает мне сообщение об ошибке «найдена ошибка в вашем .gitlab-ci.yml: job-3: требуется ‘job-1’ «. Я также проверил через CI lint, что синтаксической ошибки нет. Я не знаю, почему возникает эта ошибка.
2. @VIPINPAL это может быть связано со спецификой вашей работы, например, с использованием
only
ключевого слова. Видишь gitlab.com/gitlab-org/gitlab/-/issues/207225