Комментарии 12
Хорошая получилась статья, хоть и большая - спасибо!
Правда, вот вспоминаю как я пытался настроить CD деплоя телеграм бота на сервере и так и не получилось. Поэтому при случае был бы рад почитать про такие сценарии
Ещё, конечно, жаль, что про gitlab не написали, но причину объяснили и я понимаю, но все равно жаль - я бы почитал, т.к. чаще использую gitlab
За ситуации с Петром и Василием отдельное спасибо, помогали не терять контекст в таком количестве текста
Может, когда-нибудь разживёмся сервером по мощнее и перейдём на Гитлаб, а пока Гити с головой хватает.
У гитлаба несколько иная концепция, не получится дать гитхаб воркфлоу и гитлаб пайплайн один к одному для сравнения.
Ключевые различия: в пайплайнах гитлаба нет таких сущностей, как шаги (steps) и экшены.
Если честно, их документация несколько более запутана (чем гитхабовская) и новичку сложно понять, что это за зверь такой -- пайплайны (на деле всё оказывается куда тривиальнее, чем звучит).
TL;DR
На каждый пуш в репу (репозиторий) запускается пайплайн, состоящий из джоб, которые состоят из шелл-скриптов.
Чуть подробнее
Если не пересказывать всю оф. доку (особенно рекомендую к прочтению документацию по синтаксису, это главный документ):
В каждой репе есть один (и только один) главный царь-пайплайн, который по умолчанию запускается на каждый пуш в репу (правила запуска можно и нужно настраивать [1][2][3][4]).
Пайплайн – это набор джоб, которые распределены по стадиям, по умолчанию главный пайплайн берется из .gitlab-ci.yml в корне репы (имя файла настраивается, если у вас есть соответствующие права)
Джобы – основные строительные блоки пайплайнов (степов, как в гитхабе, нет, и это боль, потому что каждая джоба выполняется в своем отдельном контейнере).
В джобе указываются условия и параметры ее запуска и, самое важное, выполняемый скрипт (это shell script, откуда в т.ч. можно запустить скрипты* на вашем любимом языке**)
*но есть нюанс: так можно делать, если главный пайплайн лежит в той же репе, что и скрипты, потому что из других реп импортировать в пайплайн можно только yml-файлы
**но можно через шелл-скрипты склонировать нужную репу с не шелл-скриптами или скачать их через апи (нужен отдельный токен, у CI-йного недостаточно прав)
Простой пайплайн для понимания можно подсмотреть в их туториале.
Очень интересно, спасибо за такой развёрнутый комментарий! GitLab мощная машина, которой нужны соответствующие мощность и, что немаловажно, загрузка этих мощностей. Например, для моих и командных проектов пока достаточно Gitea на своём сервере, но в целом знать как оно работает точно не будет лишним.
Может, невнимательно прочитал и не увидел ссылки, но: у гитхаба есть хорошая документация по синтаксису их воркфлоу, с удобным оглавлением
https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions
Спасибо автору много нового узнал. Но мало пишу такое так как просто не знаю где столько времени взять.
В итоговом варианте у шага "- name: Set up Python" неправильный отступ.
CI/CD: основы написания Workflow