Карта / CI/CD / GitHub Actions

GitHub Actions

GitHub Actions — автоматизация, которая запускает действия (тесты, сборку, деплой) сама, при определённых событиях в репозитории (push, Pull Request) — не нужно вручную запускать тесты и собирать проект перед каждым мержем.

# .github/workflows/ci.yml
name: CI
on: push                          # запускать при каждом push

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4    # скачать код репозитория
      - uses: actions/setup-java@v4
        with:
          java-version: '17'
      - run: mvn test                # запустить тесты

Каждый push или Pull Request автоматически прогоняет тесты — если они падают, это сразу видно в интерфейсе GitHub, до того как код попадёт в main.

Копнуть глубже

Workflow состоит из jobs, jobs — из steps. Job’ы по умолчанию выполняются параллельно (если нет явной зависимости через needs), step’ы внутри одного job — последовательно:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - run: mvn test

  build:
    needs: test                      # запустится только после успешного test
    runs-on: ubuntu-latest
    steps:
      - run: mvn package

Secrets — для хранения чувствительных данных (пароли, токены доступа), не в открытом виде в коде:

- run: ./deploy.sh
  env:
    DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}   # хранится зашифрованным в настройках GitHub

Защита веток (branch protection) часто настраивают вместе с Actions — требовать, чтобы CI прошёл успешно, прежде чем разрешить мерж Pull Request в main — это превращает прохождение тестов из “хорошей практики” в обязательное условие.

🎤 Закрыл тему, если можешь объяснить:
• что делает GitHub Actions и базовую структуру workflow;
• как job'ы и step'ы выполняются (параллельно/последовательно) и зачем нужны secrets (если дошёл до 2-го слоя).