持續整合
持續整合(
Continuous Integration
,簡稱CI
)指的是,頻繁地(一天多次)將程式碼整合到主幹。 關於docker 的介紹,docker啟動容器可以關注: docker + Gitlab CI 的持續整合(一) docker + Gitlab CI 的持續整合(二)
GitLab CI是 GitLab 提供的持續整合服務, 預設有3個[stages
(階段)]: build
、test
、deploy
,大部分專案用 CI 跑build
測試,碼農可以很快得到反饋,是否寫出了 bug
所以藉助GitLab CI
怎麼搞起來呢?
1、首先需要起一個runner服務
runner
即build
構建指令碼的承載者
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
裡會提供,如下圖:
按步驟註冊以後,gitlab
上就會有我們的runner
服務了
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
下的指令碼
構建成功,伺服器上就有了這個images
,剩下的事情就是基於這個images
run 起來,這一步驟還可以利用 jenkins
來完成
~文中如有不妥之處,歡迎批評指正~