來源:https://www.redhat.com/zh/topics/devops/what-is-ci-cd
從上圖可見,CI Pipeline 的第一個 Stage/Job 多半都會是 Build
,透過 Build
將你的程式從無法運行的 Source Code 轉變成一包只要 Deploy 至 Server 之後即可運行的程式。
如果有相依其他的 Library,需要抓取相關的 Packages 的指令,讓 GitLab Runner 幫你自動執行這些指令,將 Source Code 轉變成程式看得懂語言。
script:
- npm install
- export NX_APP_STAGE=$STAGE
- yarn install --frozen-lockfile
# 不會每次都自動更新 yarn.lock 的版本
那我們打包產生出來產生的檔案該放到哪邊呢?
script:
- echo "Deploying to dev"
- echo "BUILD_VERSION=hello" >> file.env
artifacts:
paths:
- file.env
# 我將BUILD_VERSION=hello存到 file.env中
透過 script 執行後將檔案上傳到 GitLab Server 上做封存,可以看到在 dev 階段我們可以下載剛剛儲存的 artifacts 檔案。
另外你也可以設定檔案的保存期限(使用 expire_in
),如果是同一個 pipeline 不同 stage / job 之間也可以傳遞此檔案。
假設,是不同的 pipeline 呢?
我們則可以使用 Cache
, 當第二次同一個工作再次執行後,因為已經有快取內容了,這時就可以縮短很多時間。
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .next/cache/
參考文章: