項目本地開發完成後,咱們就須要將代碼部署到線上服務器。在當下微服務、集羣等的流行,單靠傳統的部署顯然是沒法知足當下的需求;可是咱們經過Gitlab和Jenkins這兩個經常使用的開源項目,即可搭建本身公司的代碼管理工具和自動化部署平臺。java
1、Gitlabgit
Gitlab 是基於 Ruby On Ralis 的一個開源版本管理系統,實現一個自託管的 Git 項目倉庫。便於對公司的代碼管理,咱們能夠在內網的服務器上搭建一套 Gitlab 系統。shell
Gitlab 能夠經過官網 https://about.gitlab.com/downloads/ ,選擇所需的服務器版本,而後根據提供的安裝步驟進行安裝,以下圖所示:npm
安裝好後能夠經過提供的管理員帳號進行登陸,Gitlab 的使用方式(GitLab 中文社區版:https://gitlab.com/larryli/gitlab/)和 Github 相似,咱們能夠爲項目工程新建一個 git ,以下圖所示:服務器
通常來講,git 項目會分紅 master 、develop 、feature、hotfix 這幾種分支類型:微服務
mater 爲主分支,主要用於發佈,代碼永遠處於穩定可產品化發佈的狀態。工具
develop 爲開發分支,主要記錄開發狀態下相對穩定的版本。gitlab
feature 爲功能分支,從 develop 上拉取代碼,開發完成後再合併到 develop 分支上。常常用於一個大版本 develop 拆分紅幾個 feature 的場景,便於多個開發人員在同一版本迭代中開發各自不一樣的功能點,避免代碼衝突,在開發完成後再合併到 develop 分支中進行測試。測試
hotfix 爲緊急線上修復分支,須要從 master 上拉取分支進行 bug 修復,修復完成後分別併入 master 和 develop 分支。ui
2、Jenkins
Jenkins 是一個開源的持續集成系統,方便開發者利用圖形化界面進行項目部署發佈等固定操做,一般也會和 Gitlab 配合起來,在 git push 完成後觸發設定好的操做,例如將代碼部署到某個開發環境中。
Kenkins 自己是用 Java 開發的,須要 jdk 的環境,再從 http://mirrors.jenkins-ci.org/ 下載最新的 war 包,而後解壓到某個固定目錄就算安裝完成了,很是方便。直接使用命令行 java -d64 -jar jeckins.war 便可,若是要之後臺進程的方式啓動,改爲nohup java -d64 -jar jeckins.war & 便可,啓動過程當中,它會將 war 包解壓到 ~/.jenkins 目錄下,並生成一些目錄及配置文件,以下所示:
Jenkins 中以 ‘Job’ 做爲任務單位,咱們能夠經過新建 Job 進行配置,以下圖所示:
General : 主要包含了 Job 的基本信息配置,例如項目名稱、描述等屬性,以下圖所示:
源碼管理:能夠和 git 配合使用,主要用於 jenkins 拉取源碼,以下圖所示:
構建觸發器:對於在開發環境常常須要發佈的項目來講,可使用構建觸發器,在 git push 後自動部署到開發服務器上,以下圖所示:
在 Gitlab 中配置 Jenkins 中提供的 Gitlab CI Service URL,便可在分支 push 的時候就執行該 Job ,以下圖所示:
構建環境:對 jenkins 所在的服務器上的環境作相應的配置,以下圖所示:
構建:執行 shell 腳本,例如進行 npm run build 的編譯行爲,將源碼編譯成最終可執行的文件,並進行壓縮合並及發佈到線上服務器。
構建後操做:整個任務部署完成後進行的操做,在這裏能夠配置郵件通知等行爲。