gitLab進行CI配置記錄

WZY發表於2021-03-09

主要配置如下

image: wangzhiying/ubuntu_ci:v1

mainCode:
    tags:
      - kxt
    only:
        - master
    before_script:
        - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client rsync -y )'
        - eval $(ssh-agent -s)
        - echo "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
        - mkdir -p ~/.ssh
        - chmod 700 ~/.ssh
        - echo "${SSH_KNOWN_HOSTS}" > ~/.ssh/known_hosts
        - chmod 644 ~/.ssh/known_hosts
    script:
#         #調整目錄許可權,保障這邊使用者組與伺服器端需要的一致
        - groupadd www
        - useradd -g www -s /sbin/nologin www
        - chown -R www:www *
        - chmod -R 755 ./ * #星號前面空格自己去掉
         #主要同步程式碼的命令,可以在這裡排除一些檔案,同步許可權,配置伺服器的專案路徑等。重點參考rsync命令的用法。
        - rsync -aztpu --delete --exclude-from ".gitlab-exclude" -e "ssh -p 2221" ./ 伺服器賬號@伺服器地址:目錄地址
testCode:
    tags:
      - kxt_test
    only:
      - develop
    before_script:
        - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client rsync -y )'
        - eval $(ssh-agent -s)
        - echo "${TEST_SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
        - mkdir -p ~/.ssh
        - chmod 700 ~/.ssh
        - echo "${TEST_SSH_KNOWN_HOSTS}" > ~/.ssh/known_hosts
        - chmod 644 ~/.ssh/known_hosts
    script:
        #調整目錄許可權,保障這邊使用者組與伺服器端需要的一致
        - groupadd www
        - useradd -g www -s /sbin/nologin www
        - chown -R www:www *
        - chmod -R 755 ./ * #星號前面空格自己去掉
        #主要同步程式碼的命令,可以在這裡排除一些檔案,同步許可權,配置伺服器的專案路徑等。重點參考rsync命令的用法。
        - rsync -aztpu --delete --exclude-from ".gitlab-exclude" ./ 伺服器賬號@伺服器地址:目錄地址

CI配置說明

  1. only 配置決定需要構建的分支,當該分支有變動時會執行流水線操作

  2. 比如一些SSH_PRIVATE_KEY或者TEST_SSH_PRIVATE_KEY等屬於變數、可在gitlab設定-CI/CD-變數中定義(注意部分變數設定受保護的話只能主分支使用)

  3. 這裡使用到docker的映象image: wangzhiying/ubuntu_ci:v1這個映象是我自己基於ubuntu原始映象執行命令'which ssh-agent || ( apt-get update -y && apt-get install openssh-client rsync -y )'後生成,主要目的為了加快構建速度,你也可以使用ubuntu映象

  4. 部分目錄或檔案不需要同步的話需要在程式碼目錄下新增.gitlab-exclude檔案、把需要禁止同步的目錄或檔案寫上

  5. ssh公鑰免密登陸伺服器的話參考網址https://blog.csdn.net/Hannnnnnnnnnnnn/article/details/110196685(本機對本地也可以,不一定需要本機對遠端伺服器)

  6. 配置完成後需要進行gitlab-Runner安裝

利用docker進行gitlab-runner 安裝

  1. 下載映象

    docker pull gitlab/gitlab-runner:latest
  2. 建立資料卷

    docker volume create gitlab-runner-config
  3. 根據安裝型別執行register命令

    docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest register
  4. 根據提示輸入

    1輸入您的GitLab例項URL(也稱為gitlab-ci coordinator URL)。
    2輸入您獲得的Token以註冊跑步者。
    3輸入跑步者的描述。您可以稍後在GitLab使用者介面中更改此值。
    4輸入與Runner關聯的標籤,並用逗號分隔。您可以稍後在GitLab使用者介面中更改此值。
    5提供跑步執行者。對於大多數用例,請輸入 docker。
    6如果您docker以執行者身份輸入,則系統會要求您提供預設映象,以用於未在中定義一個的專案.gitlab-ci.yml。

防止每次構建都拉取映象

  1. 拉取出docker容器中gitlab-runner的配置

         # 複製配置到當前目錄
          docker cp 容器ID:/etc/gitlab-runner/config.toml ./ 
  2. 新增配置配置pull_policy = "if-not-present"

gitLab進行CI配置記錄

  1. 儲存後放入容器重啟
         docker cp ./config.toml 容器ID:/etc/gitlab-runner/config.toml
         docker restart 容器ID
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章