Я использую Jenkins для запуска своих модульных тестов.Кроме того, я использую docker-compose для связи весенней загрузки и ее базы данных Postgres.Каждый раз, когда файл Jenkins выполняется во время запроса на получение или фиксации, я использую стек компоновки и проверяю, что тесты были выполнены правильно.Если тест не пройден, то контейнер прерван, и Jenkins уведомляет, но в положительном сценарии, когда приложение весенней загрузки запускается, Jenkins не уведомляет и придерживается.
это файл докера:
FROM openjdk:10-jdk
COPY run.sh /
RUN chmod +x /run.sh
COPY ./target/*.jar /app.jar
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Это файл docker-compose:
version: '3.2'
services:
app:
restart: always
build: .
container_name: app
working_dir: /app
volumes:
- .:/app
ports:
- 8085:8080
links:
- pgsql
depends_on:
- pgsql
pgsql:
image: postgres:10
container_name: pgsql
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=passwordorsomething
- POSTGRES_USER=postgres
- POSTGRES_DB=pgsql
restart: always
Это этап для запуска docker compose, запуска весенней загрузки и запуска теста:
stage('Test') {
agent {
label "docker"
}
steps {
sh 'docker rm -f $(docker ps -a -q)'
sh 'docker-compose up --build --exit-code-from app'
}
}
После того, как Дженкинс доберется до 'docker-составьте --build --exit-code-from app ', и весенняя загрузка запускает его на этапе тестирования.