Перейти до вмісту
    Без категорії / GitHub Actions CI/CD: Pipeline за 20 хвилин

    GitHub Actions CI/CD: Pipeline за 20 хвилин

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Ручне деплоєння – це витрата часу, яка краще витратити на розробку. Часто розробники стикаються з проблемами синхронізації коду, ручними конфігураціями серверів та тривалим процесом деплою, що призводить до помилок та затримок. Уявіть, що вам потрібно деплоїти зміни на production сервер щоразу після фіксації коду – це не масштабовано.

    Контекст і чому це важливо

    GitHub Actions – це вбудована система CI/CD в GitHub, яка дозволяє автоматизувати збірку, тестування та деплоєнт вашого коду безпосередньо з репозиторію. Вона замінює ручні процеси, позбавляє від помилок, пов’язаних з людським фактором, та прискорює цикл розробки.

    Якщо ігнорувати автоматизацію деплою, команда стикається з затримками релізів, підвищеним ризиком помилок в продакшені та втратою продуктивності розробників, які змушені витрачати час на рутинні завдання. Замість написання нового функціоналу, вони деплоять старий, що уповільнює прогрес проєкту.

    Практична реалізація

    Створимо простий workflow для деплою Node.js застосунку на сервер за допомогою SSH. Workflow буде збирати код, запускати тести та копіювати збірку на сервер.

    name: Deploy to Production
    
    on:
      push:
        branches:
          - main
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v3
    
          - name: Set up Node.js
            uses: actions/setup-node@v3
            with:
              node-version: '18'
    
          - name: Install dependencies
            run: npm install
    
          - name: Run tests
            run: npm test
    
          - name: Copy files to server
            uses: appleboy/scp-action@v1
            with:
              host: your_server_ip
              username: your_username
              key: ${{ secrets.SSH_PRIVATE_KEY }}
              source: ./dist/*
              target: /var/www/your_app/
    
          - name: Restart Nginx
            run: ssh your_username@your_server_ip "sudo systemctl restart nginx"
      # Коментар: Замінимо "your_server_ip", "your_username", "SSH_PRIVATE_KEY" на свої
    

    Цей workflow спочатку витягує код з репозиторію, налаштовує Node.js, встановлює залежності, запускає тести, а потім копіює збірку на сервер за допомогою `appleboy/scp-action`. Останній крок перезавантажує Nginx для застосування змін. SSH приватний ключ зберігається як секрет в налаштуваннях GitHub.

    Поширені помилки та підводні камені

    • Неправильні права доступу: Якщо SSH ключ не має правильних прав, з’єднання буде відхилено. Переконайтеся, що ключ має права 600.
      • Неправильний шлях до файлів: Помилка в `source` або `target` в `scp-action` призведе до того, що файли не будуть скопійовані. Перевірте шляхи на відповідність.
    • Неправильний синтаксис SSH команди: Помилки в команді `sudo systemctl restart nginx` можуть призвести до збою деплою. Переконайтеся, що команда правильна та працює вручну.

    Порівняння підходів

    Ручний деплой займає в середньому 30 хвилин на реліз, включаючи перевірку, копіювання файлів та перезапуск сервісів. При ручному деплої ймовірність помилок становить близько 15%, через людський фактор.
    GitHub Actions автоматизує процес деплою, скорочуючи час до 5 хвилин на реліз та знижуючи ймовірність помилок до менше 1%.

    Висновки

    GitHub Actions найкраще підходить для проектів з регулярними релізами та потребою в автоматизованому деплої. Спробуйте створити простий workflow для деплою вашого Node.js застосунку на сервер за допомогою SSH вже сьогодні, щоб відчути переваги автоматизації. Це значно підвищить ефективність вашої команди.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *