Имаме тръбопровод на GitLab, който се задейства от друг тръбопровод. Този конвейер има два етапа, всеки от които се изпълнява в отделен екземпляр на конвейера. И двата етапа функционират правилно.
Първият етап реагира на спусъка. Той намира етикет за версия в репото, увеличава го с единица и прилага този етикет обратно към текущия проект.
Вторият етап се изпълнява в отговор на нов етикет, в нов екземпляр на конвейера. Този етап също функционира перфектно, когато работи.
Проблемът е, че вторият етап вече не работи, след като първият етап работи успешно. До преди две седмици работеше добре. Ключови части от тръбопровода са възпроизведени по-долу.
ОБОБЩЕНИЕ НА ПРОБЛЕМА
- Ако използвате тригера, който задейства етапа 'createtag', етапът 'createtag' се изпълнява, създава етикета, избутва го в репото и след това етапът на 'разгръщане' с only:tags НЕ СЕ ИЗПЪЛНЯВА. Но беше така, до преди две седмици.
ТРЪБОПРОВОДЪТ ВСЕ ОЩЕ РЕАГИРА НА ДРУГИ МЕТОДИ ЗА ЗАДАВАНЕ НА ЕТИКЕТИ
- Ако създадете таг от командния ред на GIT и го изпратите в репото, етапът „разгръщане“ с only:tags работи.
- Ако създадете етикет от главната страница на проекта GitLab чрез Създаване на нов | Нова опция за падащо меню за етикети, етапът „разгръщане“ с only:tags работи.
ОЩЕ ЕДНА КЛЮЧОВА ИНФОРМАЦИЯ
Етапът 'createtag' също спря да работи преди две седмици. Оказва се, че токенът, свързан с тригера, е невалиден и потребителят, който притежаваше токена, вече не беше в компанията, а GitLab показа „Блокиран“ до потребителя в раздела „Членове“.
Поемането на собственост върху тригера/токена с текущия потребител активира повторно маркера. С това етапът „createtag“ започна да работи отново. Проблемът е, че етапът „разгръщане“ все още не се задейства, когато етапът „createtag“ избутва новия етикет към репото.
Някакви идеи за това какво се е случило и как да накарате етапа на „разгръщане“ да започне отново да отговаря на действията на етапа „createtag“? Съвсем сигурен съм, че е свързано с разрешения около потребителя, който е напуснал.
variables:
CI_DEBUG_TRACE: "true"
stages:
- createtag
- deploy
# When receiving a trigger to build, tag the repository with the next numeric
# build version. This should kick off the next build pipeline for deployment.
increment_version:
stage: createtag
script:
# For brevity, logic to connect to repo, get tags, set $NEW_TAG are omitted. They work just fine
# Create new tag and push to repo
- git tag $NEW_TAG master
- git push --tags
only:
- triggers
# When a tagged build is received, execute script
deploy_to_somewhere:
stage: deploy
script:
- [Do Something Here]
only:
- tags