1. 環境設計java
搭建一個從開發到測試知道發佈上線能夠自動換完成的CI系統。這個系統中包含4個環境。git
開發(dev)環境: 碼農使用。github
測試(test)環境: 測試人員使用。spring
預發佈(prepublish)環境: 預發佈環境,用於上線前的最後驗證。centos
正式(realpublish)環境: 正式上線運行環境瀏覽器
我指望的效果是這樣的:springboot
代碼推送到master分支,自動構建、部署到devbash
代碼推送到test分支, 自動構建、部署到testmvc
test上測試經過後,在jenkins中手動觸發relase分支構建, jenkins自動將test分支代碼合併到release上, 而後構建、部署到prepublishssh
prepublish驗證經過後,在jenkins中手動觸發publish構建,使用release分支代碼, 構建、部署到publish
以上步驟中,在不一樣的環境中自動使用不一樣的配置。
2. 環境準備
操做系統:centos7
用虛擬機虛擬出5個主機:
192.168.1.35: gitlab
192.168.1.36: jenkins
192.168.1.41: dev環境
192.168.1.42: test環境
192.168.1.43, 192.168.1.44 prepublish 環境
192.168.1.45,192.168.1.46 realpublish環境
2.1 安裝gitlab, 建立實驗用的project
在192.168.1.35上安裝gitlab, 這個主機須要配置至少4G內存,不然gitlab會很慢。
具體安裝過程參考:https://about.gitlab.com/installation/#centos-7
第一步:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
第二步:
sudo EXTERNAL_URL="http://192.168.1.35" yum install -y gitlab-ce
完成以後gitlab將會在192.168.1.35 提供服務
打開瀏覽器輸入: http://1192.168.1.35
第一次進入初始化root帳號
建立一個用於建立project的帳號
至此,gitlab環境就準備好了。
2.2 安裝配置jenkins
在192.168.1.36上運行jenkins
安裝jdk8
下載jenkins: http://mirrors.jenkins.io/war-stable/latest/jenkins.war
將jenkins.war放在 /root/jenkins中
啓動jenkins
cd /root/jenkins
./java -jar jenkins.war --httpPort=80
打開瀏覽器輸入192.168.1.36登陸jenkins。第一次進入會要求安裝默認的plugin, 安裝完成以後, 建立一個管理員帳號,而後用這個管理帳號從新登陸。
系統管理 - 管理插件 - 可選插件 選擇gitlab相關插件進行安裝:
GitLab Plugin
Gitlab Hook Plugin
建立一個用於實驗的project: example-springbootmvc。 我在github上有這個用於實驗的project: https://github.com/brandonlyg/examples-springbootmvc.git。能夠clone下來,導入到gitlab中。使這個project在gitlab中個url是 git@192.168.1.35:examples/example-springbootmvc.git
2.4 讓jenkins所在的主機能夠免密碼登陸到其餘的主機上
生成ssh key
ssh-keygen
將公鑰copy目標主機上,而後ssh登陸異常
ssh-copy-id root@192.168.1.41
ssh root@192.168.1.41
重複這兩個步驟,配置好42, 43, 44, 45, 46這幾個主機。