【问题标题】:Problem while deploying serverless with gitlab-ci使用 gitlab-ci 部署无服务器时出现问题
【发布时间】:2022-12-09 14:02:58
【问题描述】:

当我尝试在 gitlab-ci 上使用无服务器将我的烧瓶应用程序部署为 lambda 函数时出现以下错误。

Error: spawn python3.8 ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:268:19)
    at onErrorNT (internal/child_process.js:470:16)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1

但是,当我在本地运行命令 sls deploy 时,它会起作用。

这是我的serverless.yml

service: serverless-flask

plugins:
  - serverless-python-requirements
  - serverless-wsgi

custom:
  wsgi:
    app: app.app
    packRequirements: false
  pythonRequirements:
    dockerizePip: non-linux

provider:
  name: aws
  runtime: python3.8
  region: eu-west-3
  memorySize: 256
  timeout: 15

functions:
  app:
    handler: wsgi_handler.handler
    environment: ${file(env.${opt:stage, self:provider.stage}.json)}
    events:
      - http: ANY /
      - http: ANY /{proxy+}

这是我的gitlab-ci.yml

image: ubuntu:latest

stages:
  - deploy

dev:
  only:
    - develop
  stage: deploy
  before_script:
    - apt-get update
    - ARG DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && apt-get update && apt-get install -y python3.8 python3-pip && rm -rf /var/lib/apt/lists/*
    - apt update
    - apt install -y nodejs npm
    - npm install -g serverless
    - npm install
  script:
    - serverless deploy --stage dev
  environment: dev

我尝试使用不同的 docker 图像,如 python、node、ubuntu,但我无法使其工作。

【问题讨论】:

    标签: docker flask gitlab-ci serverless serverless-framework


    【解决方案1】:

    我正在通过 github 操作进行无服务器部署并遇到相同的错误消息。希望这会对您有所帮助,如果没有,我认为它会对其他人有所帮助。

    看起来 serverless-python-requirements 插件将尝试生成 provider.runtime 中的任何内容,所以在你的情况下(和我的)python3.8

    您可以在您的 serverless.yml 中覆盖它:

    custom:
      pythonRequirements:
        pythonBin: python
    

    如果您的图像有一个“python”可执行文件,它将使用它并且它应该可以工作。我意识到尽管我已经安装了正确的目标 python 版本(在我的例子中是 actions/setup-python),插件找不到它所以我认为它在单独的地方运行?

    一些关于 SO/github 问题的人说他们通过将 provider.runtime 修改为 python3.7 或 python3.9 来解决这个问题,如果他们的图像具有相应的可执行文件,这就有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      • 2021-10-07
      相关资源
      最近更新 更多