Size: a a a

2020 July 08

СГ

Сергей Голод... in ru_gitlab
job mongo1:
 stage: mongo
 rules:
   - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
     when: manual
   - if: '$CI_PIPELINE_SOURCE == "push"'
     when: manual
   - when: always
 script:
   - echo mongo1
   - sleep 40
источник

DB

Dmitrii Barsukov in ru_gitlab
нужно чтобы mongo1 выполнялось по manual
источник

DB

Dmitrii Barsukov in ru_gitlab
а вот scripts всегда
источник

DB

Dmitrii Barsukov in ru_gitlab
если делаем  так:
job mongo1:
 stage: mongo
 when: manual
 script:
   - echo mongo1
   - sleep 40

то работает как нужно
источник

DB

Dmitrii Barsukov in ru_gitlab
но проблема в селективности, я хочу потом убрать правило для push и оставить только для merge
источник

СГ

Сергей Голод... in ru_gitlab
Dmitrii Barsukov
если делаем  так:
job mongo1:
 stage: mongo
 when: manual
 script:
   - echo mongo1
   - sleep 40

то работает как нужно
как же оно работает, если в таком случае job mongo1 не запускается, а ждёт когда вы её вручную запустите
источник

DB

Dmitrii Barsukov in ru_gitlab
Сергей Голод
как же оно работает, если в таком случае job mongo1 не запускается, а ждёт когда вы её вручную запустите
А вот работает, ждёт выполнения mongo2 и начинает работать, там же always
источник

СГ

Сергей Голод... in ru_gitlab
как стэйджи определены?
источник

DB

Dmitrii Barsukov in ru_gitlab
Сергей Голод
как стэйджи определены?
в пасту кинкл
источник

DB

Dmitrii Barsukov in ru_gitlab
источник

СВ

Сергей Вихирев... in ru_gitlab
Dmitrii Barsukov
а кто профи в рулзах?
job mongo1:
 stage: mongo
 rules:
   - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
     when: manual
   - if: '$CI_PIPELINE_SOURCE == "push"'
     when: manual
 script:
   - echo mongo1
   - sleep 40

job mongo2:
 stage: mongo
 script:
   - echo mongo2
   - sleep 40

job scripts:
 stage: scripts
when: always
 script:
   - echo scripts
   - sleep 600

джоб scripts ждет выполнения mongo1. если выполнить его через manual - то он запускается, если не выполнить - то не запускается никогда
попробуй в scripts добавить needs: []
источник

СВ

Сергей Вихирев... in ru_gitlab
если артефакты не нужны из предыдущих джоб
источник

DB

Dmitrii Barsukov in ru_gitlab
Проверил, теперь запускается вместе с jest то есть одновременно и 3 и 1 стейдж
источник

СГ

Сергей Голод... in ru_gitlab
Dmitrii Barsukov
а кто профи в рулзах?
job mongo1:
 stage: mongo
 rules:
   - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
     when: manual
   - if: '$CI_PIPELINE_SOURCE == "push"'
     when: manual
 script:
   - echo mongo1
   - sleep 40

job mongo2:
 stage: mongo
 script:
   - echo mongo2
   - sleep 40

job scripts:
 stage: scripts
when: always
 script:
   - echo scripts
   - sleep 600

джоб scripts ждет выполнения mongo1. если выполнить его через manual - то он запускается, если не выполнить - то не запускается никогда
stages:
 - mongo
 - scripts

job mongo1:
 stage: mongo
 rules:
   - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
     when: manual
   - if: '$CI_PIPELINE_SOURCE == "push"'
     when: manual
 allow_failure: true
 script:
   - echo mongo1
   - sleep 40

job mongo2:
 stage: mongo
 script:
   - echo mongo2
   - sleep 40

job scripts:
 stage: scripts
 when: always
 script:
   - echo scripts
   - sleep 60
источник

СГ

Сергей Голод... in ru_gitlab
так у меня mongo1 не запускается, а job scripts запускается после mongo2
источник

DB

Dmitrii Barsukov in ru_gitlab
Allow failure добавили? Хм
источник

СГ

Сергей Голод... in ru_gitlab
Dmitrii Barsukov
Allow failure добавили? Хм
да, иначе секция rules "мешает" признать выполнение условий и вероятно помечает всю джобу как невыполненную, что не даёт пройти стадии mongo
источник

DB

Dmitrii Barsukov in ru_gitlab
Сергей Голод
да, иначе секция rules "мешает" признать выполнение условий и вероятно помечает всю джобу как невыполненную, что не даёт пройти стадии mongo
Интересно почему без секции rules просто с использованием  when нет такого поведения
источник

DB

Dmitrii Barsukov in ru_gitlab
Спасибо за решение
источник

СГ

Сергей Голод... in ru_gitlab
Dmitrii Barsukov
Интересно почему без секции rules просто с использованием  when нет такого поведения
видимо потому что секция rules меняет поведение всего pipeline в части "признание" джобы выполненной или нет.
источник