Гость
Форумы / Управление процессом разработки ИС [игнор отключен] [закрыт для гостей] / Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске. / 11 сообщений из 11, страница 1 из 1
17.09.2020, 09:45
    #39999643
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
Здравствуйте.
Цепочку CI настроил. Вот содержимое .

build-job:
stage: build
script:
- dotnet build ./MyService/MyService.csproj
- echo $env:CI_PROJECT_DIR

test-job:
stage: test
script:
- dotnet test ./MyService.UnitTests/MyService.UnitTests.csproj

deploy-job:
stage: deploy
script:
- pscp -i d:\temp\private.ppk -P 22 c:\temp\readme.txt gl_runner@192.168.2.70:/home/myService/gitlab-runner


В GitLab привязал раннер к этому проекту.
Проблема в том, что как только я делаю push в репозиторий, стартует сборка (шаг build), я вижу, в логе раннера, что всё прошло успешно, папка билда появилась, файлы в ней, но нет самих dll и exe файлов.

Но! Если я шаг "build" запускаю с сайта gitlab он также отрабатывает успешно, а в папке с билдом - все dll-ки и exe-шники уже есть.

Поясните почему так?
...
Рейтинг: 0 / 0
17.09.2020, 10:35
    #39999664
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
Посмотрел внимательно.

Происходит следующее:

1. git push
2. Стартует задача билда
3. Вижу что на сервере, где запущен раннер, в папке с билдом появляются файлы, появляется каталог build с компилированными файлами.
как только джоб отработал, файлы компиляции удаляются!

Подскажите, что сделать, чтобы файлы не удалялись?
...
Рейтинг: 0 / 0
17.09.2020, 11:23
    #39999701
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
MAULER,

Вы полный (желательно с форматированием) .gitlab-ci.yml вставьте то...
В том, что Вы привели, нет как минимум шапочки:

Код: sql
1.
2.
3.
4.
stages:
  - build
  - test
  - deploy



(круглый)
ЗЫ
Ну и если это полный файл Вы сюда закопипастили, то ... то разные stage происходят в разных запусках на ранере(ах). А вот передача результатов - то обычно делают через артифакты (время хранения указывайте например 1 час).
ЗЫ ЗЫ
Доставку результата так-же возможно делать через ранер работающий на том железе куда доставляете. Тогда в скрипте будет тупое копирование из артифактов в нужное место в системе.
ЗЫ ЗЫ ЗЫ
Отвечая на Ваш вопрос - каждый stage начинается с подготовки ранером окружения сборки. запускается тот образ среды который указана (для определённых типов ранера), далее копируется ваш проект в рамках которого отрабатывается шаг и только после всего этого происходит передача управления Вашему скрипту
...
Рейтинг: 0 / 0
17.09.2020, 13:31
    #39999767
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
kolobok0,
Спасибо Вам, что ответили!

Действительно я привел весь код скрипта. Но добавил в самом начале список стадий, как Вы порекомендовали.
Т.е.
stages:
- build
- test
- deploy

Но по факту, это ни на что не повлияло.

Если я правильно Вас понял, то "удержать" собранные экзешники возможно при помощи опции -artefacts
Вы не могли бы примерно показать как это могло бы выглядеть в моем примере?
...
Рейтинг: 0 / 0
17.09.2020, 14:29
    #39999821
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
MAULER,

по возможностям гитлаба лучше смотреть хэлп от автора .
Не удержать, а лучше наверное сказать сохранить. Т.е. потом Вы можете скачать из гитлаба (он покажет значёчек скачки артифактов), пока он будет там жив. Но стараются не забивать (особенно при большом интенсиве работы) диски гитлаба (кстати хранилище можно передвинуть на отдельные диски - см. конфиг).
Обращаю Ваше внимание на важность форматирования текста при вопросе. дело в том, что яамл формат очень и очень нежен к отступам. И то что Вы запостили тут (то как показывает форум) - работать НЕ будет .

Пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#> INFO SECTION ################################################################

Generate-build-info:  
  stage: generate_info
  image: hm/ci/utils:0.2.4
  script:
    - mkdir gen
    - /ci/create_info.sh gen/info.sh
  rules:
    - if: '$CI_COMMIT_TAG'
      when: never
    - if: '$CI_COMMIT_BRANCH == "master"'
      when: always
    - if: '$CI_COMMIT_BRANCH == "develop"'
      when: always
  artifacts:
    paths:
      - gen/info.sh
    expire_in: 1h
  tags:
    - docker



В примере видно сохранение в артифактах файла gen/info.h по относительному пути от корня репозитория .

как то так
(круглый)
ЗЫ
Укажите тэги = имена раннеров где возможна работа данного шага. у Вас не указано и помойму последние версии гитлаба без этого работать не будут.
...
Рейтинг: 0 / 0
17.09.2020, 14:52
    #39999855
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
kolobok0

Действительно, очень нежная штука в плане переносов, а сразу так и не скажешь!

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

Uploading artifacts...
Runtime platform arch=amd64 os=windows pid=1716 revision=738bbe5a version=13.3.1
WARNING: MyService/bin/*.*: no matching files
ERROR: No files to upload

а yml - файл такой:

stages:
- build
- test
- deploy

build-job:
stage: build
script:
- dotnet build ./MyService/MyService.csproj
- echo $env:CI_PROJECT_DIR

artifacts:
paths:
- MyService/bin/*.*

test-job:
stage: test
script:
- dotnet test ./MyService.UnitTests/MyService.UnitTests.csproj

deploy-job:
stage: deploy
script:
- pscp -i d:\temp\private.ppk -P 22 c:\temp\readme.txt gl_runner@192.168.0.70:/home/MyService/gitlab-runner


я не могу понять в " artifacts:" я указываю все файлы, которые получатся в результате компиляции на сервере раннера в папке сборки?

Или это должна быть папка в гите, куда оно потом должно скопироваться?
...
Рейтинг: 0 / 0
17.09.2020, 14:56
    #39999864
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
MAULER,

у Вас пробельная строка, (в данном случае это ошибка - перед указанием артифактов) и это другой шаг(пробельная строка в смысле) так начинается...

ещё раз. Используйте кнопочку "SRC v" когда пишите на форуме... Иначе не понятно, что и где у вас не леквидно.

ЗЫ
то что нашли окно проверки - то правильная колбаса. методом отсечения там можно легко найти строчку проблемную. если совсем затык...
ЗЫ ЗЫ
tags добавьте(см. внимательно мой пример) в свой yaml
...
Рейтинг: 0 / 0
17.09.2020, 15:26
    #39999893
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
kolobok0,
tags добавил!

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

Но, блин! Заработало!!! ))))))

Спасибо Вам, огромное! Бесценный опыт!
...
Рейтинг: 0 / 0
17.09.2020, 16:04
    #39999927
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
Ещё вопрос по артефакту.
Он после сборки, становится доступным для скачивания в zip-архиве прямо со страницы Gitlab-а

А хранится этот артефакт на билдсервере где запущен раннер или это какое то хранилище на самом сервере gitlab-а ?
...
Рейтинг: 0 / 0
17.09.2020, 23:58
    #40000085
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
MAULER,

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

хранить бесконечно - тут надо очень хорошо подумать, т.к. возможно этот шаг пайпы будет отрабатываться на каждом пуше в каждом бранче. Если ведётся групповая разработка, и размер артефактов не стремиться к нулю - то диски переполняются не быстро, а очень быстро. и в самый не подходящий момент. и когда встанет вопрос об очистке, то головняк начинается как, где и сколько стирать. ну и в добавок у гитлаба помойму есть дофолтное время хранения (см. время в админке). около месяца помойму.

(круглый)
...
Рейтинг: 0 / 0
18.09.2020, 09:33
    #40000155
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске.
kolobok0,

Спасибо Вам!
...
Рейтинг: 0 / 0
Форумы / Управление процессом разработки ИС [игнор отключен] [закрыт для гостей] / Настроил цепочку CI в GitLab но шаг BUILD компилирует только при ручном запуске. / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]