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 — это превращает прохождение тестов из “хорошей практики” в обязательное условие.
• как job'ы и step'ы выполняются (параллельно/последовательно) и зачем нужны secrets (если дошёл до 2-го слоя).