Size: a a a

2020 February 12

А

Алексей in ru_gitlab
с cache все ок
источник

AG

Andrey Gumilev in ru_gitlab
Алексей
в джобе docker вот так
А где ты его качаешь?
источник

YD

Yuriy Dorogov in ru_gitlab
Andrey Gumilev
А где ты его качаешь?
походу локальный кеш
источник

А

Алексей in ru_gitlab
артефакт?
источник

YD

Yuriy Dorogov in ru_gitlab
какой ранер?
источник

А

Алексей in ru_gitlab
docker executor
источник

DV

Dmitry Vorobev in ru_gitlab
Алексей
compile:
 image: node:10
 stage: build
 before_script:
   - npm install
   - npm -v
 script:
   - npm run build
 artifacts:
   expire_in: 30 min
   paths:
     - build
 #cache:
   #paths:
     #- build

docker:
 image: docker:19.03
 services:
   - docker:19.03-dind
 stage: build
 before_script:
   - mkdir -p images
 script:
   - docker build -t xxxx:yyyy ./build
Так это джобы одной стадии. Вы же наверняка хотите сперва проект собрать, а потом образ. Разнесите на последовательные стадии, артефакты у вас уже описаны, они автоматом подтянутся на последующую стадию
источник

DV

Dmitry Vorobev in ru_gitlab
Кстати, для лучшей воспроизводимости сборок юзайте npm ci вместо npm i, но надо не забывать package-lock.json коммитить в реп
источник

АК

Александр Кот in ru_gitlab
ru_gitlab! Я столкнулся с проблемой: во вкладке jobs сложно отличать какая job на каком stage запустилась
наверно все видели что это выглядит обычно так:
stage  | name
_______|______
build  | build
test   | test
test   | test


Чтобы разделить на env1 и env2 приходится копипастить(пусть и с наследованием), в yml, тогда получается

build | build_env1
test  | test_env1
teat  | test_env2


Я перепробовал довольно много вариантов, и пришёл к копипасте с переиспользованием общих частей, но мне всё интересно, решал ли кто следующие вопросы:

Можно ли динамически задавать stages или job_names, в виде параметров, прилетающих извне(?) и как это сделать?
Псевдокод как я примерно ожидаю это видеть:
variables:
 VAR1: XX
 VAR2:  XXX
stages:
- $VAR1
- $VAR2

job_${VAR1}:
 stage: $VAR1
источник

DV

Dmitry Vorobev in ru_gitlab
Александр Кот
ru_gitlab! Я столкнулся с проблемой: во вкладке jobs сложно отличать какая job на каком stage запустилась
наверно все видели что это выглядит обычно так:
stage  | name
_______|______
build  | build
test   | test
test   | test


Чтобы разделить на env1 и env2 приходится копипастить(пусть и с наследованием), в yml, тогда получается

build | build_env1
test  | test_env1
teat  | test_env2


Я перепробовал довольно много вариантов, и пришёл к копипасте с переиспользованием общих частей, но мне всё интересно, решал ли кто следующие вопросы:

Можно ли динамически задавать stages или job_names, в виде параметров, прилетающих извне(?) и как это сделать?
Псевдокод как я примерно ожидаю это видеть:
variables:
 VAR1: XX
 VAR2:  XXX
stages:
- $VAR1
- $VAR2

job_${VAR1}:
 stage: $VAR1
Теоретически - можно юзать include:remote и свой веб-сервер, который будет отдавать манифесты. Практически - хз, насколько это удобно. Ну и @kvaps пилил статью про jsonnet, это не совсем динамично, но, видимо, более компактно https://t.me/ru_gitlab/56339
источник

А

Алексей in ru_gitlab
Dmitry Vorobev
Так это джобы одной стадии. Вы же наверняка хотите сперва проект собрать, а потом образ. Разнесите на последовательные стадии, артефакты у вас уже описаны, они автоматом подтянутся на последующую стадию
Дмитрий, логика ясна. Но почему тогда на одной стадии они не подтягиваются автоматически?
источник

DV

Dmitry Vorobev in ru_gitlab
Видимо, все-таки не ясна. Все джобы одной стадии запускаются параллельно, как вы хотите их упорядочить совершенно непонятно. Ничего не мешает джобе docker запуститься раньше джобы compile. Стадия подразумевает, что все джобы, относящиеся к ней, независимы друг от друга. Зависимости возникают только между стадиями. Соответственно и артефакты передаются между стадиями.  Подробное описания передачи артефактов между стадиями в доках я не нарыл, но вот тут например черным по белому написао https://docs.gitlab.com/ee/ci/yaml/#dependencies
источник

А

Алексей in ru_gitlab
Спасибо, сейчас понятно, просто у меня при всех прогонах эти джобы проходили последовательно
источник

Vs

Vilgelm skavr in ru_gitlab
господа и дамы подскажите пожалуйста, как в пайпллайне запретить retry ? что бы он прогнался и повторно уже нини его запустить
источник

K

Kirill in ru_gitlab
Vilgelm skavr
господа и дамы подскажите пожалуйста, как в пайпллайне запретить retry ? что бы он прогнался и повторно уже нини его запустить
Есть вот такая ишью, вроде как раз про этот случай
https://gitlab.com/gitlab-org/gitlab/issues/3657
источник

K

Kirill in ru_gitlab
Vilgelm skavr
господа и дамы подскажите пожалуйста, как в пайпллайне запретить retry ? что бы он прогнался и повторно уже нини его запустить
Пока вижу 2 костыльных способа:
- Класть что-то в кеш/создавать артефакт по выполнении, а при запуске проверять наличие соотв. флага для этого коммита/тега/бранчи. Но оно сбросится при сбросе кеша/истечении TTL артефакта.
- Ходить первым шагом в API по /projects/:id/pipelines и искать там, были ли запуски для этого коммита/тега/бранчи. Если были - фейлиться.

Надеюсь, можно как-то проще.
источник

Vs

Vilgelm skavr in ru_gitlab
спасибо большое почитаю
источник

Vs

Vilgelm skavr in ru_gitlab
Kirill
Пока вижу 2 костыльных способа:
- Класть что-то в кеш/создавать артефакт по выполнении, а при запуске проверять наличие соотв. флага для этого коммита/тега/бранчи. Но оно сбросится при сбросе кеша/истечении TTL артефакта.
- Ходить первым шагом в API по /projects/:id/pipelines и искать там, были ли запуски для этого коммита/тега/бранчи. Если были - фейлиться.

Надеюсь, можно как-то проще.
ну у меня была идея что мол создавать артефакт и проверять его наличие.. если есть фейлится... но просто думал мож есть более стандартные пути...
источник

АК

Александр Кот in ru_gitlab
Dmitry Vorobev
Теоретически - можно юзать include:remote и свой веб-сервер, который будет отдавать манифесты. Практически - хз, насколько это удобно. Ну и @kvaps пилил статью про jsonnet, это не совсем динамично, но, видимо, более компактно https://t.me/ru_gitlab/56339
Звучит непонятно и кажется неудобно для использования.
источник

A

Alex in ru_gitlab
Привет, есть переменная окружения FIREBASE_TOKEN. Хочу добавить еще одну джобу, которая будет обращаться к этой переменной, но только значение должно быть другое, т.к. проекты в Firebase разные. Что можно попробовать сделать чтобы иметь разное значение?
источник