gitlab-runne關於GITLAB_CI使用

什麼是CI/CD流程

在這裏插入圖片描述
CI的好處:

  • 快速的發現錯誤
  • 保證分支不偏離主幹

執行過程中的任務流程.定義在.gitlab-ci.yml中, 運行的pipeline如下:
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章