Рубрики
Uncategorized

Настройка рабочих процессов GitHub Действия для автоматизации тестов API

В предыдущем «эпизоде» я подарил быстрое решение для автоматизации тестов API с помощью GitLab Pipeli … Теги с учебником, DevOps, Github, тестированием.

В предыдущем «эпизоде» я подарил быстрое решение для автоматизации тестов API с использованием трубопроводов GitLab. Здесь я хотел бы обсудить такое же решение, работающее на репозитории GitHub. GitHub предоставляет встроенную поддержку CI/CD, а также Gitlab, поэтому я ожидаю, что применив те же принципы, которые у меня не должно быть проблем (или, по крайней мере, не должно быть сложной задачей).

Что мы имеем в распоряжении

  1. Репозиторий GitHub для выполнения непрерывной интеграции. Мы собираемся использовать Newman, Runner Command-Line Runner для Postman.
  2. Извлеченный почтовый коллекция. Вот одинаково Httpbinfornewman.json Файл, используемый в корпусе GitLab. Цель состоит в том, чтобы сравнить результаты, полученные ранее в GitLab, с тем, который мы собираемся увидеть в Github.

Непрерывная интеграция на Github

Как описано в Github Docs , возможно создать рабочий процесс CI непосредственно в репозитории GitHUB, используя Действия GitHub Отказ Рабочий процесс — это набор рабочих мест, которые могут выполнять задачи непрерывной интеграции. Каждая работа состоит из небольших операций, называемых шагами. Рабочий процесс может быть сконфигурирован, чтобы запустить сразу после определенного типа события, например, когда нажимается на определенную ветку, и он может напрямую запускать на Github Hosted Virtual Machines.

Настройка действий GitHub

Может быть создан пользовательский рабочий процесс, открывая панель Действия репозитория. Главная страница содержит список популярных рабочих процессов/CI шаблона CI, нажав на Настройте рабочий процесс самостоятельно Кнопка новый коммит с пустым файлом рабочего процесса будет создан в репозитории.

Все рабочие процессы должны находиться внутри определенного пути репозитория GitHUB: .Github/Workflows Отказ Внутри этой папки есть файл YAML, который описывает задания. Название этого файла не имеет определенных конвенций, но структура хорошо указана. Ниже приведен два разных решения, с другим подходом:

  1. С Postman/Newman Docker Image
  2. Без Postman/Newman Docker Image

Структура файла yaml

В качестве первого шага сразу после названия рабочего процесса (CI) необходимо определить событие, которое будет вызвать действие. В этом случае установлено для каждого Push-события на Мастер ветвь.

name: CI

on:
  push:
    branches: 
    - master

Как вы можете видеть ниже, имя рабочего процесса соответствует атрибуту, указанному в файле yaml. Каждая работа выполнена, связана с сообщением Commit, в этом случае Docker Run

Теперь нам нужно определить список рабочие места Это будет выполнено: первая поднастройка предназначена для имени задания (теста), бежит на Поле указывает, что выбранный бегун, и для этого решения будет виртуальная машина размещена GitHub.

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master

использует Поле указывает заранее определенную задачу, которая может работать внутри виртуальной машины, существуют тысячи таких действий, доступных на рынке GitHub Freeplace, позже мы встретимся с другими примерами. В случае, показанном выше Действие Предназначен для оформирования последних филиалов на главной отрасли, чтобы получить обновленную версию исходного кода для желаемой ветви. Это, в целом, самый первый шаг для выполнения до прохождения других шагов. Теперь пришло время подойти к реализации двух упомянутых ранее решений.

Решение с Postman/Newman Docker Image

Супер легко, можно запустить команду Docker непосредственно внутри VM, используя Беги поле. Когда вы создаете шаг, вы просто должны быть осторожны, чтобы скопировать внутри контейнера правильный том, содержащий файл JSON с коллекцией почтового компьютера.

- name: run docker command on VM
  run: |
    docker run -v $(pwd)/test:/etc/newman -t postman/newman:latest run "HttpbinForNewman.json" --reporters="cli"

Решение без Postman/Newman Docker Image

В этом случае решение является немного более сочтенным: для запуска команды Newman, Node.js необходимо установить на VM до и конкретным Действие GitHub существует для этого: Действия/Setup-Node @ V1 Отказ Используя с поле вы можете установить параметры для настройки действия. Тогда вы должны установить Newman, самый простой способ использовать NPM. Последний шаг запускается агентом: команда Newman Run позволяет указать коллекцию для запуска. -R — это флаг, связанный с предпочтительным репортером, в данном случае через CLI.

- name: Install Node
  uses: actions/setup-node@v1
  with: 
    node-version: '12.x'

- name: Install newman
  run: |
    npm install -g newman

- name: Run POSTMAN collection
  run: |
    newman run ./test/HttpbinForNewman.json -r cli

Результат

На панели «Действия» страницы GitHUB можно ли легко понять список результатов из разных рабочих процессов. На рисунке ниже связано с тем, кто только что обсуждался.

Расширение Докер для Ньюмана Часть, можно ли расследовать журналы и оценить успех тестов, выполненных через Newman, как показано ниже.

Это файл YAML, используемый для получения этого результата.

name: CI

on:
  push:
    branches: 
    - main

jobs:
  test-api:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@main

    - name: Docker for newman
      run: |
        docker run -v $(pwd)/test:/etc/newman -t postman/newman:latest run "HttpbinForNewman.json" --reporters="cli"

В конце этих нескольких строк не так много различий между Gitlab трубопровод и действия GitHub, по отношению к случаю использования NewMan для автоматизации тестов API. Единственный аспект, который необходимо учитывать, — это различная структура файла YAML.

Оригинал: «https://dev.to/enbis/setting-up-github-actions-workflows-to-automate-the-api-tests-56m8»