繁体   English   中英

如何使用 Gitlab CI 提高基于 python 的无服务器框架项目的部署速度

[英]How to improve the speed of deployment for a python based serverless framework project using Gitlab CI

我正在尝试将我的无服务器项目与具有 CI 设置的现有 Git 存储库集成。 现有的 gitlab-ci.yml 需要 docker 映像。

我是 Gitlab CI 的新手,所以我在不同的 git 存储库中玩耍,只是想让它工作。

我已经能够让它与两种不同的 gitlab-ci.yml 设置一起工作。 但是,速度存在显着差异。

使用 ubuntu 镜像,部署需要 6 分钟:

deploy-stage:
  stage: deploy
  image: ubuntu:18.04
  environment:
    name: stage
  script:
    - apt-get update
    - apt-get install -y curl software-properties-common
    - curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
    - bash nodesource_setup.sh
    - apt install -y nodejs
    - add-apt-repository ppa:deadsnakes/ppa
    - apt install -y python3.8 python3-pip
    - cd db_update_campaigns
    - npm install
    - npm install -g serverless
    - sls deploy -v

然后我能够让它与 docker 映像一起工作(这是我需要做的以将其与现有的 git 存储库集成),但是部署需要 24 分钟:

deploy-stage:
  stage: deploy
  image: docker:stable
  environment:
    name: stage
  script:
    - apk add --update python3 py3-pip python3-dev nodejs nodejs-npm build-base postgresql-dev
    - cd db_update_campaigns
    - npm install
    - npm install -g serverless
    - sls deploy -v

有谁知道为什么会有这样的速度差异? 另外,在使用 docker 映像时,有什么方法可以提高部署速度?

对此的任何帮助将不胜感激。 在这方面,我是一个完全的初学者,所以你的任何建议都会非常感激。 非常感谢。

您似乎正在安装每个构建所需的依赖项。 cd db_update_campaigns之前的所有命令)。 这些并非特定于当前 package 的部署,因此可以预先准备好,因此只需在部署时运行npm installsls deploy命令。

为此,首先基于 docker:stable 创建自定义 docker 映像。 此图像应添加所有必需的依赖项:

FROM docker:stable
RUN apk add --update python3 py3-pip python3-dev nodejs nodejs-npm build-base postgresql-dev

构建映像并将其推送到注册表(例如 dockerhub)

docker build -t <dockerhubusername>/myBuildImage:latest
docker push <dockerhubusername>/myBuildImage:latest

在您的 gitlab-ci.yaml 中引用您的自定义图像,而不是原版 docker 之一。

deploy-stage:
  stage: deploy
  image: <dockerhubusername>/myBuildImage:latest
  environment:
    name: stage
  script:
    - cd db_update_campaigns
    - npm install
    - npm install -g serverless
    - sls deploy -v

这应该会在部署期间为您节省一些时间,因为映像不需要每次都安装依赖项。

如果您更喜欢使用私有 dockerhub 注册表或 gitlab 注册表,请参阅从 gitlab 文档中定义私有容器注册表中的映像以了解如何设置它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM