Загрузка ошибок в CircleCI с базой данных MySQL - Maven Clean также создает проблемы при запуске перед тестом Maven - PullRequest
0 голосов
/ 15 октября 2018

Я использую фреймворк Hibernate вместе с Maven в IntelliJ.Я создаю базу данных MySQL, у меня также есть несколько классов ORM, которые отображают базу данных MySQL, а затем я запускаю несколько тестов JUNIT, чтобы убедиться, что все работает.

У меня возникают проблемы в двух местах, которые связаны друг с другом:

  1. Когда я запускаю mvn test, иногда мои тесты JUNIT работают нормально и могутзапросить смоделированную базу данных, установить соединение (даже если оно только с имитированной базой данных), выполнить оператор и т. д. Однако иногда, если я запускаю mvn clean до запуска mvn test, в то время как тесты JUNIT все еще выполняются, тестывывод с ошибками (не с ошибками, а с ошибками, думал, что это все-таки плохо, конечно).
  2. Проблема, описанная в # 1, по существу дублируется, когда я загружаю в GitHub и запускаю CircleCI (что неудивительно, поскольку CircleCI запускает mvn test при проведении интеграционного тестирования).Большинство моих загрузок не удалось, но одна из них, наконец, сработала.Однако я не совсем уверен, почему «последняя» загрузка была успешной, в то время как другие не были.

Сообщения об ошибках, которые я получаю либо от mvn test, либо от сборок CircleCI, обычно следующие.Эти ошибки взяты из моей последней загрузки, той, которую я сделал незадолго до следующей загрузки, которая на самом деле работала:

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed

java.sql.SQLNonTransientConnectionException: Could not create connection to database server

Я также должен отметить, что я намерен запустить *Сначала 1021 *, затем загрузка в CircleCI, однако выполнение mvn clean, похоже, как-то связано с увековечиванием этих ошибок.

Что касается различных ресурсов, которыми я пользуюсь, то вот они.Если я что-то забыл, пожалуйста, дайте мне знать, и я смогу включить это.

В моем файле hibernate.cfg.xml у меня есть следующие строки:

<property name="connection.url">jdbc:mysql://localhost:3306/stocks</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

В конце слова «акции» в первой строке я иногда добавляю любой изследующее (иногда я добавлял только одно из следующего, иногда я комбинировал их, в зависимости от ошибок, обнаруженных в Maven или CircleCI).Добавление некоторой комбинации этих строк, казалось, помогло заставить вещи работать, но запуск mvn clean, казалось, остановил любой эффект, который имели эти добавления:

autoReconnect=true
useSSL=false
allowPublicKeyRetrieval=true

Запуск тестов JUNIT из IntelliJ обычно работает, но если я сначала запускаю mvn clean, то IntelliJ обычно не будет работать, если я не вернусь в этот файл и не добавлю ?autoReconnect=true&amp;useSSL=false.Если я это сделаю, то IntelliJ прекрасно выполнит тесты JUNIT.

В моем файле config.yml для CircleCI у меня есть следующий код.В MAVEN_OPTS были добавлены некоторые утверждения, основанные на других исследованиях, которые я проводил, чтобы попытаться противодействовать ошибкам, которые я получал, но я не знаю, оказывают ли эти утверждения какое-либо влияние, так или иначе:

# Java Maven CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-java/ for more details
#
version: 2
jobs:
  build:
    docker:
    # specify the version you desire here
    - image: circleci/openjdk:8-jdk

    # Specify service dependencies here if necessary
    # CircleCI maintains a library of pre-built images
    # documented at https://circleci.com/docs/2.0/circleci-images/
    # - image: circleci/postgres:9.4
    - image: circleci/mysql:latest-ram
      environment:
      - MYSQL_ROOT_PASSWORD: (my real password goes here)
      - MYSQL_DATABASE: stocks
      - MYSQL_USER: bob
      - MYSQL_PASSWORD: (the real password goes here)

    working_directory: ~/repo

    environment:
      # Customize the JVM maximum heap limit
      MAVEN_OPTS: -Xmx3200m -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true

    steps:
    - checkout
    - run: sudo apt install -y mysql-client

    # Download and cache dependencies
    - restore_cache:
        keys:
        - v1-dependencies-{{ checksum "pom.xml" }}
        # fallback to using the latest cache if no exact match is found
        - v1-dependencies-

    - run: mvn dependency:go-offline

    - save_cache:
        paths:
        - ~/.m2
        key: v1-dependencies-{{ checksum "pom.xml" }}

    # run tests!
    - run: mvn integration-test

Если кто-нибудь знает, что происходит, я ценю помощь.Моя цель - иметь возможность загружать в CircleCI, сначала запустив mvn clean, поэтому в загрузку включены только файлы src, файл pom.xml и папка .circleci.Кроме того, не в пользу этого, но моя последняя загрузка в CircleCI действительно сработала, но я не уверен, что заставило эту сборку работать, в то время как все остальные не сделали.

...