Google Cloud build триггер статический сайт: кодек "ascii" не может кодировать символы - PullRequest
1 голос
/ 18 марта 2019

Мой процесс создания статического сайта выглядит следующим образом:

  1. Я создаю папку public
  2. Я копирую папку public и переименовываю в gzipped.
  3. В папке gzipped я запускаю следующий код: find . -type f -exec gzip "{}" \; -exec mv "{}.gz" "{}" \;
  4. Затем я запускаю репо, и сборка запускается автоматически.

Когда я включаю символ € в мой файл .md, как показано ниже, я получаю ошибку ниже. Очевидно, ему не нравятся специальные символы, написанные примерно так - €1000 в моем файле .md (я думаю, виновником является тире -):

tags:
- tag1
- €1000
- tag2
- tag3

Здесь ошибка: Step #4: Caught non-retryable exception while listing file://./gzipped: 'ascii' codec can't encode characters in position 10-12: ordinal not in range(128) Step #4: CommandException: Caught non-retryable exception - aborting rsync.

Как исправить мой tags listing с € перед чертой?

1 Ответ

0 голосов
/ 18 марта 2019

Когда вы говорите «push to my repo», я предполагаю, что вы используете команду gsutil rsync, в основном из-за получаемого вами сообщения об ошибке, которое приходит из этой строки кода:

https://github.com/GoogleCloudPlatform/gsutil/blob/65d6a3e30e2ad51279841a8b58008a5396568ddd/gslib/commands/rsync.py#L645

Взглянув на код, я не уверен, почему gsutil пытается использовать кодек ASCII. Мои две лучшие догадки:

  • Может быть, вы используете старую версию gsutil, в которой есть ошибки кодирования? Вы можете запустить gsutil version для проверки.
  • Может быть, вы запускаете это в терминале / среде, которая использует ASCII (или что-то, что не поддерживает символы Юникода) в качестве кодировки по умолчанию? Из команды find я предполагаю, что вы работаете в системе Linux или macOS - если это так, из вашей оболочки вы можете проверить, что Python считает кодировкой по умолчанию:
$ python -c "import locale; print(locale.getdefaultlocale())"

Это излучается в моем терминале, который использует UTF-8 в качестве кодировки по умолчанию:

('en_US', 'UTF-8')

Наконец, если это не поможет, вы, вероятно, захотите получить немного больше информации, чем просто сводный текст, показанный в вашем сообщении об ошибке - вы можете попробовать добавить несколько дополнительных операторов print рядом со строкой, которую я связал. выше, в вашей локальной установке gsutil (в файле <path-to-gsutil>/gslib/commands/rsync.py). В идеале вам нужно просмотреть трассировку всего стека, чтобы увидеть, откуда возникла ошибка, поэтому было бы полезно добавить что-то вроде print(traceback.format_exc()) в тело этого блока except:.

...