前端 docker + gitlab CI 的持續整合(三)

silenceCoder發表於2018-09-28

持續整合

持續整合(Continuous Integration,簡稱CI)指的是,頻繁地(一天多次)將程式碼整合到主幹。 關於docker 的介紹,docker啟動容器可以關注: docker + Gitlab CI 的持續整合(一) docker + Gitlab CI 的持續整合(二)

GitLab CI是 GitLab 提供的持續整合服務, 預設有3個[stages(階段)]: buildtestdeploy,大部分專案用 CI 跑build 測試,碼農可以很快得到反饋,是否寫出了 bug

所以藉助GitLab CI怎麼搞起來呢?

1、首先需要起一個runner服務

runnerbuild構建指令碼的承載者

docker pull gitlab/gitlab-runner
複製程式碼
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
複製程式碼

有了前兩章的經驗,很快的啟動了一個runner的服務,那怎麼跟我們的程式碼關聯上呢?

註冊runner

docker exec -it gitlab-runner gitlab-ci-multi-runner register
複製程式碼
# gitlab-runner register 

Please enter the gitlab-ci coordinator URL:  // 構建專案提供的url
 # XXX
Please enter the gitlab-ci token for this runner:  // 構建專案提供的token
 # xxxxxx
Please enter the gitlab-ci description for this runner: // runner描述
 # docker
Please enter the gitlab-ci tags for this runner (comma separated):   // tags就是指定使用哪個runner來執行這個job
# zb
Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:  // runner的執行程式
# docker
Please enter the default Docker image (e.g. ruby:2.1):  // 執行程式選擇docker 需要指定基礎映象
# docker:latest
複製程式碼

第一、二步的URL與token哪裡來呢?

gilab需要構建的專案,settings ----> CI / CD ------> Runners 裡會提供,如下圖:

前端 docker + gitlab CI 的持續整合(三)

按步驟註冊以後,gitlab上就會有我們的runner服務了

前端 docker + gitlab CI 的持續整合(三)

2、專案根目錄建立gitlab-ci.yml檔案


cache:
  untracked: true
  paths:
    - node_modules/

stages:
  - build
  
npm_production:
  stage: build
  script:
  - pwd
  - docker build -t test-test .
  tags:
  - zb
  only:
  - master
複製程式碼

本文只是演示build一個名字為test-test的新images,這時在master上 push 程式碼,就會觸發GitLab CI構建,啟動zb這個runner來執行script下的指令碼

前端 docker + gitlab CI 的持續整合(三)

構建成功,伺服器上就有了這個images,剩下的事情就是基於這個images run 起來,這一步驟還可以利用 jenkins 來完成

前端 docker + gitlab CI 的持續整合(三)

~文中如有不妥之處,歡迎批評指正~

相關文章