До сих пор мы смогли настроить серверы развертывания и отчетности, в полной мере проведя новый коммит по обновлению приложения в производстве. Но что мы можем автоматизировать до Настаиваясь на Мастер? Что если мы запустим набор чеков, чтобы убедиться, что наше приложение ведет себя правильно, прежде чем развернуть его? Вот где действия Github пригодятся.
Действия GitHub — это функция, которая позволяет вам запускать пользовательские проверки и, ну, в общем, каждый раз, когда ваш удаленный репозиторий GIT меняется. Два основных способа его использования — это запустить автоматические проверки на нашей кодовой базе или использование ее для непрерывного развертывания. Когда мы делаем все наши компакт -диски на нашем собственном сервере, мы больше всего интересуем первым. То есть мы будем использовать действия GitHub для запуска тестов и других проверок, чтобы убедиться, что наша кодовая база в порядке.
Есть несколько способов управления вашим рабочим процессом GIT. Я не буду слишком погружаться в это, но это сводится к тому, хотите ли вы иметь филиалы функций, вы различаете между Разработать
и Мастер
, и автоматически ли вы развертываете свой код для каждого толчка. Я исследовал это некоторое время, и вот что имело для меня наибольшее смысл. Для контекста я говорю о человеке или небольшой команде, работающей над небольшим и средним проектом.
Вот мой рабочий процесс:
- Есть две ветви:
Разработать
имастер
- Код подталкивается к
развивать
- Каждый push -triggers -код проверяется, питается на действиях GH
- Предполагая, что проверки прошли, новый PR создается автоматически
- После того, как пиар подтолкнут к
Мастер
, код развернут - Вы получаете уведомление о результате проверки
Настройка действий
Нам не нужно ничего настроить, чтобы начать. Создайте файл в рамках .github/Workflows
названный nodejs.yml
и совершить его, и GitHub автоматически обрабатывает его и покажет Nodejs
Рабочий процесс под Действия
вкладка
Наш трубопровод будет состоять из трех рабочих мест: строить
, уведомлять
и Создать PR
Анкет
Строить
Наш этап сборки будет состоять из 5 команд, работающих одну за другой.
NPM Audit
: Проводят аудит безопасности зависимостейnpm ci
: Обеспечивает чистую установку зависимостейNPM запустить Lint
: Lints ваша кодовая база (например, Eslint)NPM Run Build
: Создает ваше приложение (например, WebPack)NPM Тест
: Запускает тесты (например, шутка)
Конечно, все шаги необязательны. Вы также можете добавить свои собственные чеки.
Вот полный код работы сборки:
build: runs-on: ubuntu-latest strategy: matrix: node-version: [8.x, 10.x, 12.x] steps: - uses: actions/checkout@v1 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: npm install, build, and test run: | npm audit npm ci npm run lint npm run build npm test
Стратегия.matrix
Позволяет нам проверить наше приложение в параллельных версиях Node.js, что удобно.
Уведомлять
Давайте теперь отправим WebHook на наш сервер отчетов при успешной сборке. Примечание прохождение Webhook_url
Из секретов репозитория.
notify: needs: build runs-on: ubuntu-latest steps: - name: Webhook uses: joelwmale/webhook-action@1.0.0 env: WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }} data: "{'app': 'my app', 'success': true}"
После того, как GitHub выполнит сборку, он запустит веб -крюк к указанному URL -адресу, чтобы мы могли поймать его и показать какое -то сообщение.
Кроме того, вы можете подписать свои запросы WebHook с помощью JWT или HMAC (например, с использованием это действие )
Создать PR
Наконец, давайте отправим PR в Master после успешной сборки. Секреты с Github_
Префикс предоставляется самим GitHub, поэтому нам не нужно делать что -то дополнительное здесь.
master-pr: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Create Pull Request uses: repo-sync/pull-request@v2.0.1 with: github_token: ${{ secrets.GITHUB_TOKEN }}
Прекрасная вещь в этом рабочем процессе — это то, что вы получаете обзор всех рабочих мест для каждого PR.
Завершая
Мы сделали это! Нам удалось создать целый рабочий процесс развертывания приложения.
Вот чего мы достигли.
Каждый раз, когда нажимается новый код:
- Кодовая база проверяется, чтобы убедиться, что нет уязвимостей безопасности
- Инструмент сборки, обеспечивающий отсутствие ошибок времени на сборку
- Linter запускается, чтобы убедиться, что код отформатирован правильно
- Тесты запускаются, чтобы убедиться, что приложение ведет себя правильно
- PR создан
- Мы получаем уведомление
Каждый раз, когда PR объединяется до Мастер
:
- CD -сервер обновляет приложение
- CD -сервер уведомляет сервер отчетности
- Мы получаем уведомление
Другими словами, все скучные вещи выполняются автоматически с минимальным вводом с нашей стороны разработчика.
Надеюсь, вам понравился сериал! Оттуда вы можете продолжать добавлять автоматизацию в свои сборки и развертывание трубопроводов в зависимости от требований к приложению.
Оригинал: «https://dev.to/destiner/devops-shouldn-t-be-hard-github-actions-m7i»