[英]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 install
和sls 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.