代码之家  ›  专栏  ›  技术社区  ›  good_afternoon

位桶管道:gCloud崩溃(unicodedecodeerror)

  •  2
  • good_afternoon  · 技术社区  · 6 年前

    编辑:我想注意,如果我在我的计算机上使用云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。

    在我完成某些文件的编辑之前(我使用应用引擎部署了一个WordPress站点),我最初没有出现这种奇怪的错误。

    但是,即使将存储库还原回生成成功时,它也会再次失败,并出现“error:gcloud crash(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
    

    这是我的bitback-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
    

    附录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
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   snakecharmerb    6 年前

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 26: ordinal not in range(128) 0xe2

    gcloud --verbosity=debug ....

      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
    

    os.walk path += '/' + b

    superuser answer