Сбой сборки Clojure на Travis CI с OpenJDK 9 во время lein deps - PullRequest
0 голосов
/ 06 июня 2018

Фон

У меня есть простой Clojure 1.9 проект .

Он был настроен с минимальным .travis.yml.

language: clojure
lein: 2.8.1

jdk:
- openjdk8
- openjdk9
- oraclejdk8
- oraclejdk9

ТрэвисCI

Сборки для OpenJDK 8, OracleJDK 8 и OracleJDK 9 завершены успешно.Однако в OpenJDK 9 это не удалось на этапе lein deps.

Невозможно получить пять артефактов из Clojars.Это clojure-complete, clj-http, pedestal.service, pedestal.jetty и pedestal.service-tools.

Похоже, некоторые проблемы связаны с сертификатами.Я включил некоторые из журналов ниже.

Could not find artifact clojure-complete:clojure-complete:jar:0.2.4 in central (https://repo1.maven.org/maven2/)
Could not transfer artifact clojure-complete:clojure-complete:jar:0.2.4 from/to clojars (https://repo.clojars.org/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Could not transfer artifact clojure-complete:clojure-complete:pom:0.2.4 from/to clojars (https://repo.clojars.org/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
This could be due to a typo in :dependencies, file system permissions, or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.

Вопросы

  1. Почему это случилось только со сборками OpenJDK9?
  2. Это ошибка для Travis CI илимои настройки?
  3. Как я могу это исправить?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Были обсуждения в системе отслеживания проблем Travis CI [ 1 ] и слабых клоюрианцев.

Причина в том, что OpenJDK 9 не поставляется с сертификатами, подписавшими клояры.сертификат.

Кристиан Штейн отметил, что Travis CI всегда будет предоставлять неустановленную установку JDK.В случае необходимости пользователю потребуется символическая ссылка на сертификаты ЦС системы ( Исходные слова ).

Решение

Это обновленные минимальные конфигурации Travis CI.

Он включал ручную символическую привязку сертификатов ЦС системы на этапе before_install.

language: clojure
lein: 2.8.1

jdk:
  - openjdk8
  - oraclejdk8
  - oraclejdk9

matrix:
  include:
    - jdk: openjdk9
      before_install:
        - rm "${JAVA_HOME}/lib/security/cacerts"
        - ln -s /etc/ssl/certs/java/cacerts "${JAVA_HOME}/lib/security/cacerts"

Другие решения

В качестве альтернативы можно также выполнить установку JDK с настраиваемой матрицей.

Обновления для OpenJDK 10 и 11

Все версии OpenJDK, установленные с jdk_install.sh от Travis , не исправляют сертификаты.Таким образом, вы столкнетесь с той же проблемой и для OpenJDK 10 и 11.

Вы можете уменьшить шаблон для этих версий SDK с помощью умно расположенного якоря YAML, как в примере ниже.

matrix:
  include:
- jdk: openjdk9
  before_install: &fix_certs
    - rm "${JAVA_HOME}/lib/security/cacerts"
    - ln -s /etc/ssl/certs/java/cacerts "${JAVA_HOME}/lib/security/cacerts"
- jdk: openjdk10
  before_install: *fix_certs
- jdk: openjdk11
  before_install: *fix_certs
0 голосов
/ 07 июня 2018

Извиняюсь, что это не отвечает на ваш конкретный вопрос, но просто хотел упомянуть, что похоже, что вы не единственный, кто решает эту проблему: https://github.com/travis-ci/travis-ci/issues/9368#issuecomment-395218865

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...