Перейти до вмісту
    Linux / GitHub Actions CI/CD: Робочий Pipeline за 20 Хвилин

    GitHub Actions CI/CD: Робочий Pipeline за 20 Хвилин

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

    Вручну деплоїти код — це марна трата часу та джерело багатьох помилок. Розробники витрачають години на рутинні завдання, які можна автоматизувати, і часто допускають помилки, які призводять до простою сервісів.

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

    CI/CD (Continuous Integration/Continuous Delivery) – це набір практик, які автоматизують процес розробки та випуску програмного забезпечення. GitHub Actions – це вбудована система CI/CD у GitHub, яка дозволяє створювати workflow файли, які визначають кроки автоматизації. Це особливо корисно для команд, які працюють над проектами з частими змінами коду.

    Якщо не автоматизувати деплої, час випуску нових фіч збільшується на 20-30%, а ймовірність помилок зростає на 15-20%. Така ситуація призводить до втрати конкурентної переваги та зниження продуктивності команди.

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

    Ми створимо базовий workflow для Node.js проекту, який включає в себе встановлення залежностей, запуск тестів та деплої на простий сервер. Workflow буде реалізований у файлі `.github/workflows/deploy.yml`.

    name: Node.js CI/CD
    
    on:
      push:
        branches: [ main ]
      pull_request:
        branches: [ main ]
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - 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: Deploy to server
            uses: appleboy/ssh-action@master
            with:
              host: your_server_ip
              username: your_username
              key: ${{ secrets.SSH_PRIVATE_KEY }}
              script: |
                cd /var/www/your_project
                git pull origin main
                npm install
                pm2 restart your_app
      #  В коді використано actions/checkout для отримання коду, setup-node для налаштування середовища,
      #  appleboy/ssh-action для деплої на сервер по SSH.
      #  Змінні середовища (host, username, key) зберігаються в GitHub Secrets для безпеки.
    

    Цей workflow перевіряє код при кожному push/pull request на гілку `main`. Він встановлює Node.js, інсталює залежності, запускає тести, а потім використовує SSH для деплої на сервер, оновлюючи код та перезавантажуючи додаток.

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

    • Неправильні права доступу на сервер: Якщо SSH ключ не має потрібних прав, деплої не спрацює. Переконайтесь, що ключ доданий до `authorized_keys` на сервері.
      • Відсутність GitHub Secrets: Workflow не запуститься, якщо відсутні необхідні секрети (наприклад, `SSH_PRIVATE_KEY`). Переконайтесь, що вони налаштовані в GitHub repository settings.
    • Несумісність версій Node.js: Використання несумісної версії Node.js може призвести до помилок під час встановлення залежностей або запуску додатку. Вказуйте конкретну версію у `actions/setup-node`.

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

    Ручний деплої зазвичай займає близько 30 хвилин на кожне оновлення, включаючи перевірку та потенційне виправлення помилок. Автоматизований pipeline за допомогою GitHub Actions виконує ті самі дії за 5-10 хвилин, що звільняє час розробників для більш важливих завдань.

    GitHub Actions скорочує час деплої на 60% і знижує ймовірність помилок на 40%, завдяки автоматизації рутинних процесів.

    Висновки

    GitHub Actions – чудовий інструмент для автоматизації CI/CD процесів, особливо для невеликих та середніх проектів. Створіть свій перший workflow вже сьогодні, використовуючи шаблон з цього гайду. Не забудьте замінити placeholder значення на свої реальні.

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

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