Автотесты для образов docker

Docker сильно удобная штука для упаковки и доставки кода на сервера. Тестирование кода - задача рутинная и уже давно легко автоматизируемая.

А что на счет готовых образов docker? Мы же пишем Dockerfile, в котором есть определенные инструкции по установке пакетов, открытых портов и т.п. Это такой же код, как и само наше приложение внутри доккера. Его тоже стоит покрывать тестами и для этого тоже есть инструменты.

Goss

Goss - это инструмент, основанный на YAML, для тестирования конфигурации серверов. Он облегчает процесс написания тестов, позволяя пользователю создавать тесты из текущего состояния системы.

Пример goss.yml из документации:

port:
  tcp:22:
    listening: true
    ip:
    - 0.0.0.0
  tcp6:22:
    listening: true
    ip:
    - '::'
service:
  sshd:
    enabled: true
    running: true
user:
  sshd:
    exists: true
    uid: 74
    gid: 74
    groups:
    - sshd
    home: /var/empty/sshd
    shell: /sbin/nologin
group:
  sshd:
    exists: true
    gid: 74
process:
  sshd:
    running: true

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

Интегрировать такие тесты в CI/CD процесс не сложно и весьма полезно.


Comments !