GITlab CI/CD流程配置
什麼是CI/CD流程
CI的好處:
- 快速的發現錯誤
- 保證分支不偏離主幹
執行過程中的任務流程.定義在.gitlab-ci.yml中, 運行的pipeline如下:
CI流程配置:
0. 服務器配置:
此步驟是如果gitlab服務器是自己搭建的,則需要去配置好本地IP
/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
修改host地址到gitlab對應的服務器地址。
1. gitlab-runner配置:
1.1 gitlab-runner安裝:
參考 https://docs.gitlab.com/runner/install/
以linux x86安裝爲例子:
# 下載gitlab-runner文件
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# 添加執行權限
sudo chmod +x /usr/local/bin/gitlab-runner
# 使用docker[可選]
curl -sSL https://get.docker.com/ | sh
# 創建一個gitlab-ci user[可選]
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
# 安裝和開啓service
sudo gitlab-runner install --user=gitlab-runner[這裏可以更改用戶] --working-directory=/home/gitlab-runner
sudo gitlab-runner start
1.2 gitlab-runner註冊:
註冊runner
sudo gitlab-runner register
# 根據需要填寫描述,token等,如下圖:
輸入:gitlab-ci 對應的URL ,認證token ,名稱,備註,執行器(docker較好),以及默認鏡像。
注意url和token可以從項目的 settings → CI/CD → runners 中查詢到:
配置完成後runner 顯示綠色就代表和runner保持了鏈接。
注意:需要編輯runner 的選項,保持在job 沒有tag時候也要運行。否在爲標記的jobs在pipeline在運行時會提示找不到執行器。(沒配置過得人可能會遇到坑)
1.3 修改runner的配置文件:
#查看gitlab-runner list配置
> gitlab-runner list
Listing configured runners ConfigFile=/home/bitmain/.gitlab-runner/config.toml
查看如下配置:
[[runners]]
name = "chendu_ubuntu_docker"
url = "http://10.32.228.64/"
token = "6bcb2ffc9f2efab2ddc91b3ecff7de"
executor = "docker"
[runners.custom_build_dir]
[runners.docker]
tls_verify = false
image = "ubuntu:v4"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
devices = ["/dev/bm1682-dev0:/dev/bm1682-dev0", "/dev/bmdev-ctl:/dev/bmdev-ctl"]
disable_cache = false
volumes = ["/cache", "/home/bm-driver/release_ubuntu:/workspace/release_ubuntu:rw", "/home/.sophon:/root/.sophon:rw", "/home/bitmain/bm-driver/release_centos:/workspace/release_centos:rw", "/home/bm-driver/release_debian:/workspace/release_debian:rw"]
pull_policy = "never"
shm_size = 0
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
devices: 掛載設備
volumes: 掛在目錄
pull_policy: 如果image不存在是否拉取,never表示任何時候都不拉取.
2. CI流程使用:
2.1.編寫.gitlab-ci.yml,放在項目根目錄:
.gitlab-ci.yml的詳細語法記錄在:https://docs.gitlab.com/ee/ci/yaml/ 中 ,其可以定義一個項目提交後
從build 到 test 到delpoly 中每一步可以進行的工作。以其中一個流程來具體描述
build_ubuntu:
image:
name: "ubuntu:v5"
stage: test
script:
- cd /workspace/release_ubuntu/scripts
- bash ./install_lib.sh nntc
- cd /workspace/release_ubuntu/scripts
- source envsetup_pcie.sh
- cd /builds/ai-algorithm/sophon-inference
- mkdir -p build
- cd build
- cmake ..
- make
- cd /builds/ai-algorithm/sophon-inference/python
- source setup_dev_python_path.sh
- cd /builds/ai-algorithm/sophon-inference
- python3 tests/algokit/test_yolov3.py
- python3 tests/algokit/test_ssh.py
tags:
- chendu_ubuntu_docker
build_ubuntu: pipeline的名稱
image: 運行在哪個鏡像中
stage: 在哪個階段運行,不同階段是串行的,一個階段內是並行的.
script: 具體運行的bash命令
tags: 在gitlab-runner建立時候對每個runner標記的tag,用於指定哪個此pipeline運行在哪個runner中.如下圖藍色部分的c++_runner_tag就是tag
2.2 觸發CI\CD
在每次commit項目代碼時則均會觸發代碼檢查,可以通過CI\CD菜單查看運行情況
點擊job可以查看具體內容:
3. 其他配置
如果CI失敗可以觸發不能merge,設置:
Settings -> Merge request
開啓 Only allow merge requests to be merged if the pipeline succeeds