Найти в Дзене
Skill Up In IT

DevOps and GitHub Actions

GitHub Actions — это платформа для автоматизации задач, интегрированная непосредственно в GitHub. Она позволяет создавать workflows (рабочие процессы), которые автоматически выполняются при определенных событиях, таких как push в репозиторий, создание pull request или выпуск нового релиза. GitHub Actions работает на основе событий (events). Когда происходит определенное событие в репозитории (например, push кода или создание pull request), GitHub автоматически запускает соответствующий workflow. yaml name: CI/CD Pipeline
on: push: branches: - main
pull_request: branches: - main
jobs: build: runs-on: ubuntu-latest
steps: - name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with: node-version: '14'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
- name: Build project
Оглавление

GitHub Actions — это платформа для автоматизации задач, интегрированная непосредственно в GitHub. Она позволяет создавать workflows (рабочие процессы), которые автоматически выполняются при определенных событиях, таких как push в репозиторий, создание pull request или выпуск нового релиза.

изображение взято с просторов интернета
изображение взято с просторов интернета

Основные компоненты GitHub Actions:

  1. Workflows — это автоматизированные процессы, которые описываются в YAML-файлах и хранятся в директории .github/workflows вашего репозитория. Workflow может состоять из одного или нескольких jobs (задач).
  2. Jobs — это набор шагов (steps), которые выполняются на одном и том же runner (исполнителе). Jobs могут выполняться последовательно или параллельно.
  3. Steps — это отдельные задачи, которые выполняются в рамках job. Каждый шаг может быть либо командой shell, либо действием (action).
  4. Actions — это отдельные, повторно используемые блоки кода, которые выполняют конкретные задачи. Actions могут быть созданы вами или взяты из GitHub Marketplace.
  5. Runners — это серверы, на которых выполняются workflows. GitHub предоставляет собственные runners (на базе Ubuntu, Windows и macOS), но вы также можете настроить свои собственные self-hosted runners.

Как работает GitHub Actions?

GitHub Actions работает на основе событий (events). Когда происходит определенное событие в репозитории (например, push кода или создание pull request), GitHub автоматически запускает соответствующий workflow.

Пример workflow:

yaml

name: CI/CD Pipeline

on:
push:
branches:
- main
pull_request:
branches:
- main


jobs:
build:
runs-on: ubuntu-latest

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

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'

- name: Install dependencies
run: npm install

- name: Run tests
run: npm test

- name: Build project
run: npm run build

- name: Deploy to production
if: github.ref == 'refs/heads/main'
run: npm run deploy

Разбор примера:

  1. name: Название workflow.
  2. on: События, которые запускают workflow. В данном случае workflow запускается при push в ветку main или при создании pull request в эту ветку.
  3. jobs: Определяет задачи, которые будут выполнены. В данном случае одна задача — build.
  4. runs-on: Указывает, на каком runner будет выполняться задача. В данном случае используется последняя версия Ubuntu.
  5. steps: Шаги, которые выполняются в рамках задачи. Каждый шаг может быть либо действием (uses), либо командой (run).

Преимущества GitHub Actions

  1. Интеграция с GitHub: GitHub Actions полностью интегрирован с GitHub, что делает его идеальным выбором для проектов, уже использующих эту платформу.
  2. Гибкость: Вы можете создавать собственные actions или использовать готовые из GitHub Marketplace. Это позволяет адаптировать процессы под конкретные нужды проекта.
  3. Автоматизация: GitHub Actions позволяет автоматизировать практически любой этап разработки, от сборки и тестирования до развертывания и мониторинга.
  4. Масштабируемость: Вы можете использовать как предоставленные GitHub runners, так и настроить свои собственные, что позволяет масштабировать процессы в зависимости от нагрузки.
  5. Прозрачность: Все workflows и их результаты легко просматривать прямо в интерфейсе GitHub, что упрощает отладку и мониторинг.

Примеры использования GitHub Actions

1. Непрерывная интеграция (CI)

GitHub Actions отлично подходит для настройки CI-пайплайнов. Вы можете автоматически запускать тесты при каждом push или pull request, чтобы убедиться, что новый код не ломает существующую функциональность.

yaml

name: CI

on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest

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

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'

- name: Install dependencies
run: npm install

- name: Run tests
run: npm test

2. Непрерывное развертывание (CD)

GitHub Actions также можно использовать для автоматического развертывания приложения на сервер или в облако (например, AWS, Azure, Google Cloud) после успешного прохождения тестов.

yaml

name: CD

on:
push:
branches:
- main

jobs:
deploy:
runs-on: ubuntu-latest


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

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'

- name: Install dependencies
run: npm install

- name: Build project
run: npm run build

- name: Deploy to production
run: npm run deploy

3. Автоматизация рутинных задач

GitHub Actions можно использовать для автоматизации рутинных задач, таких как отправка уведомлений в Slack, создание issue при обнаружении ошибок или обновление документации.

yaml

name: Notify Slack

on:
issues:
types: [opened]

jobs:
notify:
runs-on: ubuntu-latest

steps:
- name: Send Slack notification
uses: slackapi/slack-github-action@v1
with:
slack-message: 'New issue created: ${{ github.event.issue.html_url }}' env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

Заключение

GitHub Actions — это мощный инструмент для автоматизации процессов разработки, который позволяет командам внедрять практики DevOps прямо в GitHub. С его помощью можно легко настроить CI/CD-пайплайны, автоматизировать рутинные задачи и ускорить доставку качественного кода в production.

Использование GitHub Actions не только повышает эффективность работы, но и способствует улучшению качества кода за счет автоматического тестирования и развертывания. Если ваш проект уже использует GitHub, то GitHub Actions станет отличным дополнением к вашему инструментарию.