簡體   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