Остановить службу контейнера docker, если тест Go не пройден - PullRequest
0 голосов
/ 21 февраля 2020

Я запускаю свои Go тесты, используя docker -композитный сервис. Я хочу завершить работу контейнера или выполнить сборку, когда мои тесты не пройдены. Но теперь, когда Go -тесты не пройдены, контейнер docker показывает pr_validator_tests_1 exited with code 0, что неверно.

tests_1        | FAIL   go-testing-framework/tests  0.029s
tests_1        | FAIL
pr_validator_tests_1 exited with code 0

Я запускаю свой docker -compose файл с помощью этой команды: docker-compose up --abort-on-container-exit --exit-code-from test

Вот так я запускаю свой набор тестов.

func TestIntegration(t *testing.T) {
    suite.Run(t, new(TestSuite))
}

Тестовое утверждение:

if !s.Equal(expectedCode, response.StatusCode) {
        s.T().Error(message)
        return
    }

docker -compose.yml file

version: '3'

services:
  integration:
    build:
      context: ./
      dockerfile: Dockerfile
    healthcheck:
      test: ["CMD", "nc", "localhost", "3000"]
    environment:
      - some envies
    container_name: integration
    ports:
      - 3000:3000

  mockservice:
    image: mock:latest
    environment:
      - some envies
    ports:
      - 8801:8801

  tests:
    image: go-testing-framework:latest
    environment:
      - URL=http://integration:3000
      - and some envies
    links:
      - integration
    depends_on:
      - integration
      - mockservice

Есть ли какой-либо вариант ОТКЛЮЧИТЬ сборку Jenkins без использования плагинов Jenkins или используя golang код?

1 Ответ

0 голосов
/ 24 февраля 2020

Я добавил ||exit 1 в конце команды make, а также добавил сценарий оболочки для получения кода выхода.

#!/bin/bash
make test
status=$?
if [[ $status != 0 ]]; then
  echo "exit code for test: " $status
  exit $status
fi

И этот скрипт завершает работу контейнера, если тест не пройден

...