Почему gcloud auth activ-service-account не работает в Windows? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть токен учетной записи службы Google Cloud, недавно загруженный.Я хотел бы активировать его на Windows, Mac и Linux как часть конвейера CI.Для этого я делаю:

gcloud auth activate-service-account --key-file=./token.json

Это прекрасно работает на Linux и Mac.В Winddows я получаю следующую ошибку:

ERROR: (gcloud.auth.activate-service-account) Could not read json file C:\Users\appveyor\token.json: No JSON object could be decoded

Ошибка возникает независимо от того, вызываю ли я gcloud из PowerShell или gcloud.cmd из cmd.exe.Что происходит?

1 Ответ

0 голосов
/ 15 мая 2019

Понял, что это была проблема с кодировкой символов. Ранее я получал строку в AppVeyor, используя

[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($env:GCLOUD_TOKEN)) | Out-File .\token.json

, который записывал файл как UTF-16LE. Связанный Python gcloud не заботился об этом. Моя следующая попытка использовала Set-Content -Encoding utf8 .\token.json, но это записывает UTF-8 с спецификацией, которую gcloud все еще не может обработать. Наконец-то все заработало:

$content = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($env:GCLOUD_TOKEN)) ; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False ; [System.IO.File]::WriteAllLines('token.json', $content, $Utf8NoBomEncoding)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...