Gitlab CI(一)
生活随笔
收集整理的這篇文章主要介紹了
Gitlab CI(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Gitlab CI流程設計與思考
repo添加ci完整流程
新增Repo CI注冊需要開發者提供的信息和我們這邊需要反饋的信息。
CI注冊需要提供的信息:
1. Repo url
2. 需要注冊哪些CI服務器:Linux CI服務器、Windows CI服務器、rk3399性能測試CI服務、rk3399內存檢測CI服務器、單元測試CI服務器
3. 需要支持哪些功能:編譯測試、靜態分析、CodeCoverage、單元測試、性能測試、動態內存檢測、SDK打包發布。CI負責人需要:
1. 提供注冊好的CI服務器tags給項目維護者。
2. 協助提供docker鏡像和確認鏡像版本。
3. 提供同樣功能的CI腳本樣例給項目維護者。
流程設計如下
Gitlab CI介紹
文章目錄
- Gitlab CI流程設計與思考
- repo添加ci完整流程
- 流程設計如下
- Gitlab CI介紹
- 1. reference
- 2. pipeline設計實例:
- 2.1整體pipeline設計:整個流程分為以下四個階段
- 2.2 CI build pipeline 設計
- 2.3 CI test pipeline 設計:接口測試
- 2.4 CI release pipeline 設計:打包發布
1. reference
https://meigit.readthedocs.io/en/latest/gitlab_ci_.gitlab-ci.yml_detail.html#gitlab-ci-yml
https://docs.gitlab.com/ee/ci/yaml/index.html
https://zhuanlan.zhihu.com/p/122313251
2. pipeline設計實例:
2.1整體pipeline設計:整個流程分為以下四個階段
stages:- build- test- release- deploy
2.2 CI build pipeline 設計
depth_linux-x86_64-build:image: 192.168.xxx.xxx:12345/ubuntu16.04-x86_64:v2stage: buildscript:- chmod a+x script/depth_build/build_x86_64.sh- ./script/depth_build/build_x86_64.shrules:- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'when: alwaysartifacts:name: "$CI_COMMIT_REF_NAME"expire_in: 1 weekpaths:- build - linux-x86_64tags:- linux-x86_64
以上工作對應的解釋如下
job:整個項目的驅動從這里開始image: docker鏡像及其版本與位置stage: 當前job所屬階段script:當前job驅動腳本,可以簡化job復雜度rules:- if: rules觸發條件when: rules觸發狀態artifacts:name: "$CI_COMMIT_REF_NAME"//artifacts:name
name指令允許你對artifacts壓縮包重命名,你可以為每個artifect壓縮包都指定一個特別的名字,這樣對你在gitlab上下載artifect的壓縮包有用expire_in: 1 week //artifacts:expire_in 用于設置 artifacts 上傳包的失效時間. 如果不設置,artifacts 的打包是永遠存在于 gitlab上 的。當指定 artifacts 過期時間的時候, 在該期間內,artifacts 包將儲存在 gitLab 上。并且你可以在 job 頁面找到一個 keep 按鈕,按了以后可以覆蓋過期時間,讓 artifacts 永遠存在。過期之后,用戶將無法訪問到 artifacts 包。時間的例子如下:
'2h20min' '6 mos 1 day' '3 weeks and 2 days'paths:- linux-x86_64 //path位置位于${CI_PROJECT_DIR},位于gitlab自己部署的服務器上tags:- linux-x86_64 //這里是該job運行的平臺,比如可以是RK3399等,根據實際需要設置
2.3 CI test pipeline 設計:接口測試
depth_linux-x86_64-interface:image: 192.168.xxx.xxx:12345/ubuntu16.04-x86_64:v1stage: testneeds: ["depth_linux-x86_64-build"]script:- chmod a+x script/depth_test/interface_x86_64.sh- ./script/depth_test/interface_x86_64.sh rules:- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'when: alwaysartifacts:name: "$CI_COMMIT_REF_NAME"expire_in: 1 weekpaths:- DepthMagicTest.json tags:- linux-x86_64
以上工作對應的解釋如下
job:測試job名稱。可以根據實際起名字image: docker——imagestage: 當前階段needs:依賴。一般是對前一個stage的依賴,當依賴job完成時候,開始啟動當前jobscript:簡化當前jobrules:- if: rules觸發條件when: rules觸發狀態artifacts:name: "$CI_COMMIT_REF_NAME"expire_in: 1 weekpaths:- 具體測試項tags:- 測試平臺
2.4 CI release pipeline 設計:打包發布
depth_release_linux-x86_64:image: 192.168.xxx.xxx:12345/ubuntu16.04-x86_64:v5stage: releaseneeds: ["depth_linux-x86_64-build"]script:- chmod a+x script/depth_release/pack_linux-x86_64.sh- ./script/depth_release/pack_linux-x86_64.sh- curl --upload-file depth-xxx-sdk-linux-x86_64-*.tar.gz -u $NAS_LOGIN smb://$nas_ip/$release_x_path/depth-xxx-sdk/release/linux-x86_64/rules:- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'when: manualtags:- linux-x86_64
以上工作對應的解釋如下
release job:image: docker——image運行環境stage: release階段needs: ["depth_linux-x86_64-build"]//依賴jobscript:具體執行美容rules:rules遵循規則tags:- linux-x86_64
總結
以上是生活随笔為你收集整理的Gitlab CI(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vim----ma6174
- 下一篇: 红米x55电视机2699值得买吗?