Рубрики
Uncategorized

DevOps не должно быть трудным: GitHub Действия

До сих пор мы смогли настроить серверы развертывания и отчетности, сделав полный путь от нажатия NE … с меткой JavaScript, Node, DevOps, GitHub.

До сих пор мы смогли настроить серверы развертывания и отчетности, в полной мере проведя новый коммит по обновлению приложения в производстве. Но что мы можем автоматизировать до Настаиваясь на Мастер? Что если мы запустим набор чеков, чтобы убедиться, что наше приложение ведет себя правильно, прежде чем развернуть его? Вот где действия 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.

Завершая

Мы сделали это! Нам удалось создать целый рабочий процесс развертывания приложения.

Вот чего мы достигли.

Каждый раз, когда нажимается новый код:

  1. Кодовая база проверяется, чтобы убедиться, что нет уязвимостей безопасности
  2. Инструмент сборки, обеспечивающий отсутствие ошибок времени на сборку
  3. Linter запускается, чтобы убедиться, что код отформатирован правильно
  4. Тесты запускаются, чтобы убедиться, что приложение ведет себя правильно
  5. PR создан
  6. Мы получаем уведомление

Каждый раз, когда PR объединяется до Мастер :

  1. CD -сервер обновляет приложение
  2. CD -сервер уведомляет сервер отчетности
  3. Мы получаем уведомление

Другими словами, все скучные вещи выполняются автоматически с минимальным вводом с нашей стороны разработчика.

Надеюсь, вам понравился сериал! Оттуда вы можете продолжать добавлять автоматизацию в свои сборки и развертывание трубопроводов в зависимости от требований к приложению.

Оригинал: «https://dev.to/destiner/devops-shouldn-t-be-hard-github-actions-m7i»