Реализация Github Actions в проекте с тестовой машиной

Текущая архитектура нашего проекта довольно проста:

Многочисленные репозитории Github объединяются в Master и развертываются на Server.

Но мы хотим добавить к нему Тестирование. И в настоящее время я изучаю возможность Github Actions.

Возможно ли сделать такую установку:

  1. Code getting merged to "Develop" branch and trigger Github Action
  2. Github Action push code to Test server and run all Unit Tests
  3. return test result, maybe as Email or something.
  4. If tests are successful Develop branch getting merged to Master.

Можно ли настроить все это только с помощью Github Action или нам нужно будет добавить Jenkins или Travis?

Спасибо за ваше время.

Действие GitHub ограничено серверами GitHub.

Если ваш тестовый сервер доступен из интернета, вы можете использовать действие развертывания GitHub.

Но чаще всего используется сервер GitHub, и он настраивается (через образ Docker или с помощью действий типа setup-java) для представления вашей среды выполнения (тестовой или иной).

См. например "Continuous deployment using Docker, GitHub Actions, and Web-hooks" от Arthur Effting (CTO @ accuras)

Создайте два новых конфигурационных файла YAML в корне вашего проекта в папке /.github/workflows.

  • Первый файл будет использоваться для мастер-ветки и будет выполнять некоторые тесты, чтобы убедиться, что каждый push проходит нормально.
  • Второй будет применяться только для релизных веток и будет не только тестировать новую версию, но и создавать для нее образ docker и запускать перераспределение.
name: Master - Testing

on:
  push:
    branches:
      - 'master'

jobs:

  artifact:

    name: Test master branch - GitHub Packages
    runs-on: ubuntu-18.04

    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11.0.4
      - name: Maven Package
        run: mvn -B clean package -DskipTests
      - name: Maven Verify
        run: mvn -B clean verify

https://miro.medium.com/max/1400/1*l0nTe86ypMoU9rvg9_UEgw.png

Я работаю над рабочим процессом, в котором код отправляется на тестовый сервер и тестируется:

  • создание образа docker и размещение его на dockerhub
  • использование appleboy/ssh-action для извлечения образа docker и запуска тестов на тестовом сервере.

Я создал рабочий процесс для фиктивного тестового случая по адресу https://github.com/bmichele/remote-unit-tests, чтобы его можно было изменить для реальных случаев использования. Если тест не пройдет, действие завершится неудачно, и вы получите уведомление.

Обратите внимание, что при текущей конфигурации рабочий процесс запускается при каждом нажатии, вам придется изменить его для своих нужд. Кроме того, он использует прокси для доступа к тестовому серверу. Если вам не нужен прокси, вы можете убрать поля proxy_host, proxy_username и proxy_key из yaml-файла).

Вернуться на верх