编辑:我想指出,如果我在计算机上使用cloud sdk手动部署,则不会发生此问题。仅在管道中
再次编辑:我在gcloud应用程序部署中添加了verbosity = debug。这是生成的内容:
Do you want to continue (Y/n)?
DEBUG: No bucket specified, retrieving default bucket.
DEBUG: Using bucket [gs://staging.PROJECT.appspot.com].
DEBUG: Service [appengineflex.googleapis.com] is already enabled for project [PROJECT]
Beginning deployment of service [default]...
INFO: Need Dockerfile to be generated for runtime php
Building and pushing image for service [default]
DEBUG: 'ascii' codec can't decode byte 0xe2 in position 26: ordinal not in range(128)
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 845, in Execute
resources = calliope_command.Run(cli=self, args=args)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 767, in Run
resources = command_instance.Run(args)
File "/usr/lib/google-cloud-sdk/lib/surface/app/deploy.py", line 87, in Run
parallel_build=False)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", line 594, in RunDeploy
flex_image_build_option=flex_image_build_option)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", line 393, in Deploy
flex_image_build_option)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", line 283, in _PossiblyBuildAndPush
self.deploy_options.parallel_build)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/deploy_command_util.py", line 427, in BuildAndPushDockerImage
skip_files=service.parsed.skip_files.regex)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/cloud_build.py", line 151, in UploadSource
skip_files)
File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/cloud_build.py", line 122, in _GetIncludedPaths
paths = docker.utils.exclude_paths(root, exclude)
File "/usr/bin/../lib/google-cloud-sdk/lib/third_party/docker/docker/utils/utils.py", line 111, in exclude_paths
all_paths = get_paths(root)
File "/usr/bin/../lib/google-cloud-sdk/lib/third_party/docker/docker/utils/utils.py", line 135, in get_paths
for parent, dirs, files in os.walk(root, followlinks=False):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 286, in walk
if isdir(join(top, name)):
File "/usr/lib/python2.7/posixpath.py", line 80, in join
path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 26: ordinal not in range(128)
ERROR: gcloud crashed (UnicodeDecodeError): 'ascii' codec can't decode byte 0xe2 in position 26: ordinal not in range(128)
我正在尝试使用bitbucket管道部署到gcloud。
最初,在完成某些文件的编辑之前,我没有这个奇怪的错误(我正在使用App Engine部署Wordpress网站)。
但是,即使将我的存储库恢复到我的构建成功时,它最终也会再次失败,并显示以下错误:gcloud崩溃(UnicodeDecodeError):'ascii'编解码器无法解码位置26的字节0xe2:序数不在范围(128)
这对我来说毫无意义。运行正常。有没有办法扩展此错误或查找导致此错误的文件?
以下是在管道中触发构建之后的结果:
+ gcloud app deploy
Services to deploy:
descriptor: [/opt/atlassian/pipelines/agent/build/app.yaml]
source: [/opt/atlassian/pipelines/agent/build]
target project: [project]
target service: [default]
target version: [20180731t175825]
target url: [https://site.appspot.com]
Do you want to continue (Y/n)?
Beginning deployment of service [default]...
Building and pushing image for service [default]
ERROR: gcloud crashed (UnicodeDecodeError): 'ascii' codec can't decode byte 0xe2 in position 26: ordinal not in range(128)
If you would like to report this issue, please run the following command:
gcloud feedback
To check gcloud for common problems, please run the following command:
gcloud info --run-diagnostics
这是我的bitbucket-pipelines.yml
图片:php:7.1.1
pipelines:
branches:
master:
- step:
# set GCLOUD_PROJECT environment variablee to your project ID
# set GCLOUD_API_KEYFILE environment variable to base64-encoded keyfile as described here: https://confluence.atlassian.com/x/dm2xNQ
name: Deploy to GCloud
deployment: production # set to test, staging or production
# trigger: manual # uncomment to have a manual step
image: google/cloud-sdk:latest
caches:
- composer
script:
- echo $GCLOUD_API_KEYFILE | base64 --decode --ignore-garbage > ./gcloud-api-key.json
- gcloud auth activate-service-account --key-file gcloud-api-key.json
- gcloud config set project $GCLOUD_PROJECT
- gcloud app deploy app.yaml
app.yaml
runtime: php
env: flex
handlers:
- url: /(.*\.(htm|html|css|js))$
static_files: wordpress/\1
upload: wordpress/.*\.(htm|html|css|js)$
application_readable: true
- url: /wp-content/(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))$
static_files: wordpress/wp-content/\1
upload: wordpress/wp-content/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
application_readable: true
- url: /(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))$
static_files: wordpress/\1
upload: wordpress/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
application_readable: true
- url: /wp-includes/images/media/(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))$
static_files: wordpress/wp-includes/images/media/\1
upload: wordpress/wp-includes/images/media/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
application_readable: true
- url: /wp-admin/(.+)
script: wordpress/wp-admin/\1
secure: always
- url: /wp-admin/
script: wordpress/wp-admin/index.php
secure: always
- url: /wp-login.php
script: wordpress/wp-login.php
secure: always
- url: /wp-cron.php
script: wordpress/wp-cron.php
login: admin
- url: /xmlrpc.php
script: wordpress/xmlrpc.php
- url: /wp-(.+).php
script: wordpress/wp-\1.php
- url: /(.+)?/?
script: wordpress/index.php
beta_settings:
cloud_sql_instances: project:us-central1:match
runtime_config:
document_root: wordpress
skip_lockdown_document_root: true
env_variables:
WHITELIST_FUNCTIONS: escapeshellarg,escapeshellcmd,exec,pclose,popen,shell_exec,phpversion,php_uname
答案 0 :(得分:1)
问题是由gcloud尝试处理的路径中的非ASCII字符引起的。
消息UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 26: ordinal not in range(128)
是Python异常,表明尝试将字节0xe2
编码为ascii时出现问题。
运行gcloud --verbosity=debug ....
会生成Python回溯。
回溯结束
File "/usr/bin/../lib/google-cloud-sdk/lib/third_party/docker/docker/utils/utils.py", line 135, in get_paths
for parent, dirs, files in os.walk(root, followlinks=False):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 296, in walk
for x in walk(new_path, topdown, onerror, followlinks):
File "/usr/lib/python2.7/os.py", line 286, in walk
if isdir(join(top, name)):
File "/usr/lib/python2.7/posixpath.py", line 80, in join
path += '/' + b
表明Python代码正在遍历文件系统层次结构(os.walk
是这样做的),而有问题的操作正在建立路径(path += '/' + b
是在做的事情)。
鉴于此信息,下一步是检查与非ASCII字符的部署有关的路径,OP可以使用此superuser answer中的技术成功地完成这些操作。