【Gitlab】gitlab-CI 持續集成以及runner的配置簡版

在咱們完成項目開發後,提交到git,當監聽提交後,自動進行編譯,並進行項目的部署,是否是一想就很爽,因此下面引入咱們 > 的主角 —— gitlab-CI,中文文檔html

Gitlab CI

Gitlab-CI 是 GitLab Continuous Integration(Gitlab持續集成)的簡稱。
從Gitlab的8.0版本開始,gitlab就全面集成了Gitlab-CI,而且對全部項目默認開啓。
只要在項目倉庫的根目錄添加.gitlab-ci.yml文件,而且配置了Runner(運行器),那麼每一次合併請求(MR)或者push都會觸發CI pipeline。node

Gitlab-Runner

安裝gitlab-ci-multi-runner(linux)

# 添加yum源
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

# 安裝
yum install gitlab-ci-multi-runner

使用 gitlab-ci-multi-runner 註冊 Specific Runners

runners.jpg

$ gitlab-ci-multi-runner register
Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
>>>>>> 你的URL

Please enter the gitlab-ci token for this runner:
>>>>>> 你的Token

Please enter the gitlab-ci description for this runner:
>>>>>> 你對該runner的描述

Please enter the gitlab-ci tags for this runner (comma separated):
>>>>>> 該runner的標籤

Whether to run untagged builds [true/false]:
[false]: true

>>>>>> 是否運行沒有標記的項目(後期能夠改)

Whether to lock Runner to current project [true/false]:
[false]:

>>>>>> 是否鎖定只運行當前項目(後期能夠改)

Registering runner... succeeded                     runner=9e48baqx

Please enter the executor: parallels, docker+machine, ssh, virtualbox, docker-ssh+machine, kubernetes, docker, docker-ssh, shell:

>>>>>> 選擇runner的類型(根據你的需求選擇,我選擇的shell,個人項目是node項目)

Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
  1. 首先你的項目中的 getlab-runner.yml 文件中的命令須要的環境,你的runner所在的服務器是必需要搭好的,必須你須要執行 npm installnpm run build ,那你的服務器必需要有node環境;
  2. runner的類型比較重要,你必需要清楚你須要一個什麼類型的runner。好比,開始我是須要一個可以運行node項目的runner,可是網上的不少教程統一都是都選擇docker,這個時候你電腦上必需要安裝了docker才能夠,由於這至關於在docker裏面又安裝了一個docker(docker in docker),因此對於個人需求來講,我選擇shell就能夠了;
  3. 經過Gitlab中某個項目的 Settings 下的 CI/CD Pipelines 按鈕進入的頁面中獲得的URL和Token所註冊的runner只服務於本項目,當你在其餘項目的當前頁面時,能夠選擇讓這個runner爲當前項目開啓服務。

配置 gitlab-runner.yml

mage: node:9.11.1

pages:
 cache:
   paths:
   - node_modules/

 script:
 - cnpm install
 - npm run build
 - sudo rm -rf /data/ftp/http/files/scfAdminDoc
 - sudo mv ./scfAdminDoc /data/ftp/http/files/
 artifacts:
   paths:
   - public
 only:
 - master

具體配置見文檔linux

其餘

代碼推送到gitlab上以後,一直是pending狀態,要等好久才pick到一個runner來執行

這個現象通常發生在本機註冊了多個runner,以前的都刪除了,只留下一個,可是當咱們在gitlab管理平臺移除了某個runner的時候,並無徹底刪除記錄,當執行的 gitlab-ci-multi-runner list 的時候你會發現它仍然還在,若是須要完全刪除它,還應該這樣作:git

cd /etc/gitlab-runner
ls

# 你會看到config.toml文件,打開它並刪除已有的那些runner記錄
vim config.toml

配置node環境

  1. 下載node-v9.11.1-linux-x64.tar.xz文件
  2. 例如放在 /home 文件夾
    ```bash
    # 進入所在目錄,解壓
    tar -xvf node-v9.11.1-linux-x64.tar.xzgithub

    # 重命名文件夾
    mv node-v9.11.1-linux-x64 nodejsdocker

    # 創建軟連接,配置全局環境變量(源路徑和目標路徑爲相對路徑)
    ln -s /home/nodejs/bin/npm /usr/local/bin/
    ln -s /home/nodejs/bin/node /usr/local/bin/shell

    # 檢查是否配置成功
    node -v
    npm -v
    ```npm

scp上上傳

# 普通
scp ./public/* root@192.168.0.226:/data/ftp/http/files/
scp 源路徑/源文件 用戶名(root)@服務器IP:目標路徑


# 免密碼
yum install sshpass
sshpass -p 111111 scp ./public/* root@192.168.0.226:/data/ftp/http/files/
sshpass -p 密碼 scp 源路徑/源文件 用戶名(root)@服務器IP:目標路徑

若是是下載,調換順序vim

scp root@192.168.0.226:/data/ftp/http/files/ ./public/*
scp 用戶名(root)@服務器IP:目標路徑 源路徑/源文件

我的博客:午後南雜bash

相關文章
相關標籤/搜索