前端持續(xù)集成gitlab-ci

最近開發(fā)vue項目時經(jīng)常需要打包部署到測試環(huán)境,甚至每天都要部署三四次,然后便想到了使用GITLAB-CI的方式做持續(xù)集成.一來不用每次手動打包了,二來也方便管理維護(題主本地開發(fā)系統(tǒng)為win10, 服務器系統(tǒng)為CentOS 7.6.1810)

gitlab CentOS版本 - 14.6.1
gitlab-runner CentOS版本 -> 15.5.0

  1. 服務器安裝git
  2. 服務器配置ssh免密登錄
  3. 服務器配置docker
  4. 服務器docker配置node鏡像
  5. 服務器安裝gitlab-runner
  6. 服務器注冊runner
  7. 配置gitlab-ci變量
  8. 編寫.gitlab-ci.yml腳本文件

一. 服務器安裝git

1. yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
2. yum -y install git
3. git version

二. 服務器配置ssh免密登錄

本地機打開git窗口后依次運行
1. 生成秘鑰對執(zhí)行 ssh-keygen -t rsa -C "username@163.com" -f C:/Users/Admin/.ssh/id_rsa_129 后直接一路回車就可以
2. 在 C:/Users/Admin/.ssh/config 文件來指定需要訪問服務器的用戶名, IP, 端口, 秘鑰(如果沒有config文件,需自己創(chuàng)建一個)
   Host 192.168.159.129
   Port 22
   HostName 192.168.159.129
   User xiaoheihei
   IdentityFile ~/.ssh/id_rsa_129
3. 使用 ssh-copy-id 192.168.159.129 命令免密登錄服務器
ps: 為什么生成秘鑰對的時候要加郵箱和指定秘鑰名稱?
    因為后續(xù)我們可能會有多個項目都需要使用CI來管理, 這樣可以方便區(qū)分

三. 服務器配置docker

1. 安裝 yum -y install docker
2. 運行 service docker start
3. 檢查是否啟動成功 docker ps

四. 服務器docker配置node鏡像

1. 拉取鏡像 docker pull node:16.17.0
2. 查看是否安裝成功 docker images

五. 服務器安裝gitlab-runner

下面為 root 用戶操作
1. curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
2. chmod +x /usr/local/bin/gitlab-runner
3. useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
4. gitlab-runner install --user=xiaoheihei --working-directory=/home/gitlab-runner
5. systemctl start gitlab-runner

六. 服務器注冊runner

url 和 token 在 gitlab當前項目 -> settings -> CI/CD -> Runners 下


reg.png
1. Enter the GitLab instance URL (for example, https://gitlab.com/)
   - http://192.168.21.26/
2. Enter the registration token:
   - iF3yjzXgxjD8p6xt81oJ
3. Enter a description for the runner:
   - 描述
4. Enter tags for the runner (comma-separated):
   - test
   ps: tag非常重要,.gitlab-ci.yml腳本的執(zhí)行就是根據(jù)tag判斷的
5. Enter optional maintenance note for the runner:
   - 隨意
6. Enter an executor: instance, kubernetes, docker, docker-ssh, parallels, virtualbox, docker-ssh+machine, custom, shell, ssh, docker+machine:
   - docker
7. Enter the default Docker image (for example, ruby:2.7):
   - node:16.17.0
   ps: 之前 docker 安裝的 node 鏡像

完整步驟如下:


runner-reg.jpg

七. 配置gitlab-ci變量

配置變量的位置在 gitlab當前項目 -> settings -> CI/CD -> Variables 下

依次創(chuàng)建變量
ENV_129_SSH_PRIVATE_KEY 值為 C:/Users/Admin/.ssh/id_rsa_129 文件內(nèi)容
ENV_129_SSH_CONFIG 值為 C:/Users/Admin/.ssh/config 文件內(nèi)容
ENV_129_SSH_KNOWN_HOST 值為 C:/Users/Admin/.ssh/known_hosts 文件內(nèi)容
ENV_129_USERNAME 值為 服務器用戶名(eg: xiaoheihei)
ENV_129_HOST 值為 服務器IP(eg: 192.168.159.129)
ENV_129_PATH 值為 ~/html/

八. 編寫.gitlab-ci.yml腳本文件

image: node:16.17.0 # 使用 docker node:16.17.0鏡像

stages: # pipeline 執(zhí)行步驟
  - build_129
  - deploy_129

cache: # 緩存
  paths:
    - node_modules
    - dist

build_129:job: # 執(zhí)行 build_129 階段
  tags:
    - "test" # 對應服務器注冊 runner 時輸入的 tag
  only:
    - main # 僅在main分支有提交代碼時執(zhí)行該階段
  stage: build_129 # 階段標識
  before_script: # 執(zhí)行命令前
    - yarn -v
  script: # 執(zhí)行命令
    - yarn
    - yarn build
  artifacts: # 產(chǎn)物
    paths: # 產(chǎn)物生成地址
      - dist
    when: on_success # 生命周期鉤子
    expire_in: 1 days # 存儲失效

deploy_129:job: # 執(zhí)行 deploy_129 階段
  tags:
    - "test" # 對應服務器注冊 runner 時輸入的 tag
  only:
    - main # 僅在main分支有提交代碼時執(zhí)行該階段
  stage: deploy_129 # 階段標識
  environment: # 環(huán)境變量
    name: "129" # 環(huán)境變量名稱
  before_script: # 執(zhí)行命令前
    - mkdir -p ~/.ssh # 創(chuàng)建 .ssh 文件夾
    - chmod 700 ~/.ssh # 權限改為 700
    - eval $(ssh-agent -s) # 私鑰程序
    - echo "$ENV_129_SSH_KNOWN_HOST" > ~/.ssh/known_hosts # 將 ENV_129_SSH_KNOWN_HOST 變量的內(nèi)容輸出到 known_hosts 文件中
    - chmod 644 ~/.ssh/known_hosts # 將 known_hosts 文件權限改為 644
    - echo "$ENV_129_SSH_CONFIG" > ~/.ssh/config # 將 ENV_129_SSH_CONFIG 變量的內(nèi)容輸出到 config 文件中
    - chmod 600 ~/.ssh/config # 將 config 文件權限改為 600
    - echo "$ENV_129_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa_129 # 將 ENV_129_SSH_PRIVATE_KEY 變量的內(nèi)容輸出到 id_rsa_129 文件中
    - chmod 600 ~/.ssh/id_rsa_129 # 將 id_rsa_129 文件權限改為 600
    - ssh-add ~/.ssh/id_rsa_129 # 將密鑰添加到 ssh-agent 的高速緩存中
  script: # 執(zhí)行命令
    - scp -r ./dist $ENV_129_USERNAME@$ENV_129_HOST:$ENV_129_PATH # 將當前 dist 文件夾遞歸復制到 xiaoheihei@192.168.159.129:~/html/ 下

整理遇到的問題:

  1. 免密登錄無響應
    嘗試配置服務器 /etc/ssh/sshd_config 文件中
    StrictModes no
    RSAAuthentication yes
    PubkeyAuthentication yes
  2. 免密登錄配置后仍需要輸入密碼
    嘗試配置服務器 /etc/ssh/sshd_config 文件中
    PasswordAuthentication no
  3. 注冊好runner后在gitlab中提示New runner. Has not connected yet
    查看/etc/gitlab-runner/config.toml中是否有剛剛注冊的runner信息,如果沒有嘗試切換root賬戶重新注冊
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荐糜,更是在濱河造成了極大的恐慌玄妈,老刑警劉巖晴圾,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機嗓违,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來图贸,“玉大人蹂季,你說我怎么就攤上這事∈枞眨” “怎么了偿洁?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沟优。 經(jīng)常有香客問我父能,道長,這世上最難降的妖魔是什么净神? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮溉委,結果婚禮上鹃唯,老公的妹妹穿的比我還像新娘。我一直安慰自己瓣喊,他們只是感情好坡慌,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藻三,像睡著了一般洪橘。 火紅的嫁衣襯著肌膚如雪跪者。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天熄求,我揣著相機與錄音渣玲,去河邊找鬼。 笑死弟晚,一個胖子當著我的面吹牛忘衍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卿城,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枚钓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瑟押?” 一聲冷哼從身側(cè)響起搀捷,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎多望,沒想到半個月后嫩舟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡便斥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年至壤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枢纠。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡像街,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晋渺,到底是詐尸還是另有隱情镰绎,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布木西,位于F島的核電站畴栖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏八千。R本人自食惡果不足惜吗讶,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恋捆。 院中可真熱鬧照皆,春花似錦、人聲如沸沸停。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘟滨,卻和暖如春候醒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杂瘸。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工倒淫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胧沫。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓昌简,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绒怨。 傳聞我的和親對象是個殘疾皇子纯赎,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容