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

    GitHub Actions CI/CD: Автоматизація за 20 хвилин

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

    Налаштування CI/CD може здатися складним, особливо коли потрібно автоматизувати збірку, тестування та деплой проєктів. Відсутність автоматизації призводить до ручної роботи, збільшує ризик помилок і сповільнює процес розробки, що критично для команд, які прагнуть до швидкої ітерації.

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

    GitHub Actions дозволяє автоматизувати робочі процеси безпосередньо в репозиторії GitHub. Це означає, що кожна коміт може автоматично запускати тестування, лінтування та інші перевірки, щоб забезпечити якість коду. Інтеграція з інструментами, як-от Docker, Nginx та Bash, робить процес деплою ще більш ефективним.

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

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

    Створимо простий pipeline для Node.js проєкту, який автоматично запускає npm install, тестування та деплой на простий сервер через SSH.

    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
    

    Цей workflow файл визначає три етапи: checkout (отримання коду з репозиторію), install (встановлення залежностей) та deploy (деплой на сервер через SSH). Використання `secrets.SSH_PRIVATE_KEY` дозволяє безпечно зберігати приватний ключ SSH. `pm2 restart your_app` перезапускає Node.js додаток, забезпечуючи оновлення коду.

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

    • Неправильно налаштовані secrets: Якщо SSH ключ невірний, деплой не відбудеться і workflow зупиниться з помилкою “Permission denied (publickey)”. Перевірте, щоб приватний ключ відповідав публічному ключу на сервері.
      • Проблеми з правами доступу: Якщо скрипт деплою не має прав на запис в директорію на сервері, виникнуть проблеми з оновленням коду. Переконайтеся, що користувач SSH має необхідні права.
    • Відсутність кешування залежностей: Повторне встановлення залежностей на кожній ітерації може збільшити час виконання workflow на 20-30%. Використовуйте кешування npm залежностей в GitHub Actions.

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

    Раніше, для автоматизації CI/CD використовувалися самописні скрипти або сторонні CI/CD сервери, що вимагало багато часу на налаштування та підтримку. Наприклад, Jenkins потребував окремого сервера, конфігурування плагінів і постійного моніторингу, займаючи до 8 годин на тиждень для підтримки.

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

    Висновки

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

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

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