Найти тему
BASH_HINTY

CI/CD НА РАЗ-ДВА

Зачем нам нужен ci/cd? Не знаю. Спрошу Chat GPT 3.5.

  1. Ускорение процесса разработки
  2. Облегчение интеграции кода
  3. Уменьшение ошибок и повышение качества
  4. Упрощение развертывания
  5. Быстрый отклик на изменения

Действительно, без CI/CD задача развертывания кода выглядит не так уж просто. Нужно каждый раз при вношении изшменений заходить на сервер, подтягивать и перезапускать.

Простая реализация

Для демонстрации процесса ci/cd я решил развернуть простое nodejs приложение с github actions. Эту платформу я выбрал как решение от самого популярного сервиса для хранения кода.

Репозиторий: https://github.com/aintproud/node_ci

Делаем приложение

const http = require('http');

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World! Finnaly? Yeah!');
});

const port = 3000;
server.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});

Это самый простой сервер на nodejs. Запускаем на localhost:3000, на запрос получаем Hello, World! Finnaly? Yeah!

Пишем deploy.yml

Делаем папку .github/workflows и в ней deploy.yml

name: Self-Hosted Workflow
on:
push:
branches:
- main

jobs:
deploy:
runs-on: self-hosted
timeout-minutes: 5

steps:
- name: Checkout Repository
uses: actions/checkout@v2

- uses: actions/setup-node@v2
with:
node-version: '18'

- uses: actions/setup-node@v2
- name: Dependencies installation
run: npm ci

- name: Start app
run: pm2 restart index.js --name=default

Тут все элементарно: устанавливаем зависимости и запускаем процесс в pm2 (просто запустить node не получится, так как step не будет исполнен), можно сделать и с docker.

Размещение на github

Как сделали репозиторий, нужно установить worker

Заходим как показано на картинке и следуем инструкциям для вашей системы, переходя по зеленой кнопке.
Заходим как показано на картинке и следуем инструкциям для вашей системы, переходя по зеленой кнопке.