Много проблем при настройке сервера обновлений hawkbit

Я пытаюсь настроить сервер обновлений hawkBit в соответствии с https://www.eclipse.org/hawkbit/gettingstarted/ , но возникает много проблем, которые я не знаю, как решить. Ниже приведены краткие шаги настройки:

  1. Предпосылки
      sudo apt install -y default-jre default-jdk
java -version
*openjdk version "11.0.9.1" 2020-11-04*
*OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04)*
*OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)*

sudo apt install maven

sudo apt-get -y install mariadb-server
  1. Скачать исходный код сборки
      git clone https://github.com/eclipse/hawkbit.git
cd hawkbit
mvn clean install

*Start hawkBit update server*
*Access http://localhost:8080/UI/login to check*
java -jar ./hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-0.3.0-SNAPSHOT.jar
  1. Настроить hawkBit 3.1. Настроить базу данных
      sudo mysql -u root
*Welcome to the MariaDB monitor.  Commands end with ; or \g.*
*Your MariaDB connection id is 31*
*Server version: 10.1.47-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04*
*Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.*
*Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.*

MariaDB [(none)]> USE mysql;
*Reading table information for completion of table and column names*
*You can turn off this feature to get a quicker startup with -A*
*Database changed*
MariaDB [mysql]> CREATE USER 'test'@'localhost' IDENTIFIED BY '123456a@';
*Query OK, 0 rows affected (0.00 sec)*
*MariaDB [mysql]> UPDATE user SET authentication_string=password('123456a@') where user='test';*
*Query OK, 0 rows affected (0.00 sec)*
*Rows matched: 1  Changed: 0  Warnings: 0*

MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost';
*Query OK, 0 rows affected (0.00 sec)*

MariaDB [mysql]> UPDATE user SET plugin='mysql_native_password' WHERE User='test';
*Query OK, 1 row affected (0.01 sec)*
*Rows matched: 1  Changed: 1  Warnings: 0*

MariaDB [mysql]> FLUSH PRIVILEGES;
*Query OK, 0 rows affected (0.00 sec)*

MariaDB [mysql]> CREATE DATABASE hawkbit;
*Query OK, 1 row affected (0.00 sec)*

MariaDB [mysql]> ALTER DATABASE hawkbit COLLATE latin1_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [mysql]> grant all privileges on hawkbit.* TO 'test'@'localhost' identified by '123456a@';
*Query OK, 0 rows affected (0.01 sec)*

MariaDB [(none)]> exit
*Bye*

sudo service mysql restart

Добавьте следующий код в файл hawkbit-runtime/hawkbit-update-server/pom.xml.

      <dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <scope>compile</scope>
</dependency>

Переопределите следующий код на hawkbit-runtime/hawkbit-update-server/src/main/resources/application-mysql.properties:

      spring.jpa.database=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/hawkbit
spring.datasource.username=test
spring.datasource.password=123456a@
spring.datasource.driverClassName=org.mariadb.jdbc.Driver

Application.properties добавляется новый URL:

      server.hostname=http://<my_ip_addr>   
server.port=<my_port>

Восстановите и запустите:

      cd hawkbit
mvn clean install
java -jar ./hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-0.3.0-SNAPSHOT.jar --spring.profiles.active=mysql

Откройте http://<my_ip_addr>:<my_port>, я не могу войти под именем пользователя "admin" и паролем "admin".

Запустите hawkBit без --spring.profiles.active=mysql, мне удастся войти в систему с правами администратора, admin. Даже application.properties остается неизменным, результаты те же.

Я пытаюсь закомментировать всю безопасность пользователей:

      # spring.security.user.name=admin
# spring.security.user.password={noop}admin-pwd
# spring.main.allow-bean-definition-overriding=true

и раскомментируйте Определить собственных пользователей вместо пользователя «admin» по умолчанию:

      hawkbit.server.im.users[0].username=test
hawkbit.server.im.users[0].password={noop}123456a@
hawkbit.server.im.users[0].firstname=Huong
hawkbit.server.im.users[0].lastname=Ha
hawkbit.server.im.users[0].permissions=ALL

сборка завершилась неудачно со следующим журналом:

      [INFO] hawkBit :: Runtime :: Update Server ................ FAILURE [  7.579 s]
[INFO] hawkBit :: Test Report ............................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  14:59 min
[INFO] Finished at: 2020-12-26T16:47:05+07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project hawkbit-update-server: There are test failures.
[ERROR] 
[ERROR] Please refer to /home/huong/software-update-server/hawkbit/hawkbit-runtime/hawkbit-update-server/target/surefire-reports for the individual test results.

Итак, у меня есть несколько вопросов и надеюсь, что кто-то может помочь:

  1. Точные шаги для настройки сервера обновлений hawkBit. Любой опыт будет полезен
  2. База данных hawkbit (создана, как описано выше) — это пустая база данных. У вас есть база данных, совместимая с hawkBit?

Спасибо, Хуонг Ха.

1 ответ

Процедура, которой вы следуете, вполне верна. Тем не менее, есть несколько замечаний относительно вашего подхода:

  1. Вы можете не запускать все тесты при сборке Hawkbit, указав skipTestsаргумент мавена: mvn clean install -DskipTests. Это значительно сократит время сборки.
  2. Вам не нужно изменять application.propertiesдля использования базы данных MySQL. Вместо этого просто укажите --spring.profiles.active=mysqlпрограммный аргумент для активации профиля Spring "mysql" и адаптации application-mysql.propertiesпо мере необходимости (в вашем случае изменение имени пользователя и пароля в конфигурации источника данных).
  3. Вам нужно либо использовать spring.security.user.nameа также spring.security.user.passwordили же hawkbit.server.im.users, а не оба . Пользователь безопасности Spring должен работать из коробки. Кроме того, вы НЕ должны комментировать spring.main.allow-bean-definition-overriding=true, он отвечает за механизм переопределения bean-компонентов Spring и не имеет ничего общего с Spring Security.
  4. Hawkbit использует контроль версий Flyway DB ( https://flywaydb.org ), что означает, что он будет выполнять все необходимые сценарии миграции БД во время запуска приложения.
  5. И да, вы можете запустить Hawkbit с java11 (см. https://github.com/eclipse/hawkbit/commit/ed9a4b1bb31f4cd996e8af8867d67cdcda682d00)

Надеюсь, это продвинет вас дальше ;)

Другие вопросы по тегам