Ответ
CI/CD (Continuous Integration/Continuous Delivery) — это практика автоматизации процессов разработки, тестирования и развертывания кода.
CI (Continuous Integration) — автоматическая сборка и тестирование кода при каждом коммите в репозиторий. Позволяет быстро находить ошибки.
CD (Continuous Delivery/Deployment) — автоматическое развертывание кода на тестовые или продакшн-серверы после успешного CI.
Пример конфигурации CI/CD (GitHub Actions):
name: CI/CD Pipeline
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npm test
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm run build
- uses: actions/upload-artifact@v2
Популярные инструменты: GitHub Actions, GitLab CI/CD, Jenkins, CircleCI.
Ответ 18+ 🔞
А, слушай, про эту вашу CI/CD, ну, блядь, как же без неё сейчас, а? Это ж типа священный грааль для разработчика, чтобы не обосраться в продакшене.
Представь, ты пишешь код, такой весь из себя красавчик. А потом надо его собрать, протестить, задеплоить... Раньше это делали вручную, и, блядь, волнение ебать — каждый раз как в русскую рулетку играешь. То забыл что-то, то сломалась сборка, а в продакшене уже пиздец и клиенты в ярости.
Так вот, умные люди придумали CI (Continuous Integration). Это когда ты закидываешь свой код в общую кучу (репозиторий), а система, сука, автоматически его хватает, собирает и прогоняет все тесты. Каждый раз, блядь! Как только ты сделал коммит — тут же начинается цирк. Если что-то пошло не так — сразу видно, где косяк. Красота, да? Не надо ждать, пока коллега на утро придет и начнет орать: "Кто тут, блядь, всё сломал?!"
А дальше идет CD. Это уже два варианта, как повезет:
- Continuous Delivery — это типа "всё готово к запуску, но кнопку нажмём потом, когда начальство разрешит". Код автоматически упакован и лежит, ждёт своего часа.
- Continuous Deployment — это уже полный автопилот, ёпта! Тесты прошли? Сборка удалась? Отлично, система сама, без спросу, выкатывает это всё на боевые сервера. Живешь, блядь, на грани фола, зато быстро.
Вот смотри, как это примерно выглядит в конфиге, например, для GitHub Actions. Код трогать не буду, он и так норм:
name: CI/CD Pipeline
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npm test
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm run build
- uses: actions/upload-artifact@v2
Видишь? Сначала build — стянул код, поставил зависимости, прогнал тесты. Если тут всё ок, только тогда запускается deploy, который уже собирает продакшен-версию и куда-то её заливает. Всё, как по нотам, без твоей, блядь, кривой руки.
Инструментов, ядрёна вошь, дохуя: GitHub Actions, GitLab CI/CD, Jenkins (этот дед ещё жив, представляешь?), CircleCI. Выбирай, что душе угодно. Главная мысль — перестань, блядь, делать это вручную, а то ещё разобьёшься. Автоматизируй, и живи спокойно. Ну, почти спокойно.