Docker 及 GitLab CI 在前端工做流上的實踐分享(二)

上一篇講了 Docker 的使用,這篇一樣經過一個簡單示例,來說講 GitLab CIhtml

1、什麼是 GitLab CI ?

gitlab-ci 全稱是 gitlab continuous integration,也就是基於 gitlab 的持續集成工具。中心思想是當每一次
push到gitlab的時候,都會觸發一次腳本執行,而後腳本的內容包括了測試,編譯,部署等一系列自定義的內容。
高版本的 GitLab 自帶了 GitLab CI,因此不須要另外安裝。node

2、什麼是 GitLab-Runner ?

GitLab-Runner 是腳本執行的承載者,GitLab-CI 事先註冊好 GitLab-Runner,再 push 代碼,對應的 Runner 就會執行你所定義的腳本。git

3、安裝 GitLab-Runner

Gitlab Runner安裝方式有兩種,一種是直接二進制文件安裝,一種是基於docker鏡像安裝。docker

二進制文件安裝

[1] 下載對應操做系統的二進制包,我這裏使用的是mac版本,npm

sudo curl --output /usr/local/bin/gitlab-ci-multi-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-darwin-amd64

[2] 給 gitlab-ci-multi-runner 設置權限segmentfault

sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner

以上是官方安裝文檔,若是有問題,能夠手動到版本下載列表下載對應的版本,而後複製到/usr/local/bin/目錄下 ---- 反正我是本身下載安裝才能用的,淚目 T T後端

[3] 註冊runner
首先,進入到你的 gitlab 項目網頁,找到 Settings -> Pipelines,而後找到對應的 urltoken
緩存

而後在終端輸入bash

gitlab-ci-multi-runner register

而後刷新你的網頁,會看到
服務器

說明註冊成功了。

另外,咱們能夠經過 gitlab-ci-multi-runner list 查詢你註冊的runner ,用 gitlab-ci-multi-runner status 查看 runner 服務是否運行中。

docker鏡像安裝

[1] 先獲取 gitlab-runner 鏡像

sudo docker pull gitlab/gitlab-runner:latest

[2] 啓動 gitlab-runner container

sudo docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

[3] 註冊runner

sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register

註冊過程略,方式同方式一步驟3.

4、配置.gitlab-ci.yml

GitLab CI的一切工做,都是由 .gitlab-ci.yml 來配置的。詳細文檔能夠參考這裏

首先,在項目根目錄下建立 .gitlab-ci.yml 文件(編輯完要提交到g itlab 才能生效):

#定義 stages,用來定義工做階段,多個 stages 會按順序進行
stages:
  - build
  - deploy_test
  - deploy_production

# 設置緩存 
cache:
  paths:
    - node_modules/
    - dist/

# 安裝依賴 before_script 會在每一個 stages 執行以前運行
before_script:
- npm install

# 編譯 這裏對應上方 stages ,
build:
  stage: build 
  script:    # script 爲要執行的命令,能夠多條按順序執行
    - npm run build

# 部署測試服務器 
deploy_test:
  stage: deploy_test
  only:    # only 定義觸發分支,即只有在dev分支提交是  才執行如下命令
    - dev
  script:
    - bash scripts/dev.sh


# 部署生產服務器
deploy_production:
  stage: deploy_production
  only:
    - master
  script:
    - bash scripts/deploy.sh

配置完成後,當你在項目 push 代碼到 gitlab 的時候,就會觸發 gitlab-ci,而後執行你定義的代碼。
能夠在

running 表示正在運行,passed 表示經過了。
ps:有個容易遇到的坑,當你卡在 pending 不動的時候,能夠看看你的 runner 是否設置了 '無 tag 標籤也運行'
回到你的 runner,點編輯

而後,勾選第二項 Run untagged jobs

運行日誌能夠在這裏查看

那麼到這,GitLab CI 的基本使用,已經完成啦,趕快去試一下吧 :)

參考資料:
gitlab-runner 安裝
gitlab ci yaml 配置
【後端】gitlab之gitlab-ci自動部署

相關文章
相關標籤/搜索