CircleCI, использующий узел docker: 8 (debian) не устанавливает правильную локаль - PullRequest
0 голосов
/ 24 февраля 2020

У меня настроен конвейер CircleCI для моего теста с использованием моментального снимка Jest, и один из моих тестов моментального снимка продолжает давать сбой. Я использую Javascript, чтобы сгенерировать объект Date (new Date("YYYY-MM-DD")), и локально он выдает MM / DD / YYYY, но на изображении docker (node:8) вместо этого выдается YYYY-MM-DD, поэтому проверка моментального снимка не пройдена. Я попытался настроить языковые стандарты следующим образом:

docker:
  - image: circleci/node:8
    environment:
        TZ: "America/Los_Angeles"
        LANG: en_US.UTF-8
        LANGUAGE: en_US.UTF-8
        LC_ALL: en_US.UTF-8

Но он жалуется, что не может установить языковой стандарт по умолчанию, поэтому я добавил:

- run:
        name: Reconfigure Locale
        command: sudo dpkg-reconfigure locales

, что, по-видимому, является решением для большинства люди, у которых была та же проблема, но не в моем случае.

Я также пытался получить тот же локальный docker образ и протестировать его там, и он отлично работал с этими командами:

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales

RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=en_US.UTF-8

Поэтому я попробовал это в командах circleci и sed, которые жаловались на разрешения, даже когда он вызывается с помощью sudo.

1 Ответ

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

Ладно, к вашему сведению, именно версия узла вызвала проблему с форматом даты. Я установил full-icu npm пакет, который обрабатывает локаль для приложения узла. Чтобы повторно посетить мою проблему, я успешно установил языковой стандарт и установил его так же, как на локальном компьютере, но Node будет выбирать языковой стандарт не из системы, а из используемого браузера. Я надеюсь, что эта информация поможет.

...