gitlab+jenkins+maven持續集成自動化部署平臺

背景:爲了改變目前手工發佈項目的流程煩鎖,耗時,容易出錯,浪費人力物力財力,低效的情況,搭建基於docker容器化的git+jenkins+maven持續集成自動化部署平臺,實現從代碼提交到生產部署的自動化解決方案,把整個開發生產過程流水線自動化,爲公司節省人力物力財力,爲開發人員省下更多的時間去優化業務功能等。java

可以經過自動化構建、測試和發佈流程,經過運行一整套,一致的質量檢查提升軟件更新的速度和質量。從代碼提交到應用部署的自動化完整流程,確保只有經過自動測試的代碼才能交付和部署,高效替代業內部署複雜、迭代緩慢的傳統方式。git

1、安裝dockerweb

yum -y install docker

啓動docker 後臺服務:docker

service docker start

查看docker版本等詳細信息:shell

2、docker安裝gitlabbash

docker pull gitlab/gitlab-ce:latest

建立並啓動gitlab容器:首次啓動可能比較慢,須要等待一分鐘左右的時間。服務器

docker run --detach --hostname X.X.X.X --publish 8099:80 --publish 2222:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab:z --volume /srv/gitlab/logs:/var/log/gitlab:z --volume /srv/gitlab/data:/var/opt/gitlab:z 453d64ae84c7

啓動成功後,打開hostname指定的地址+端口: http://X.X.X.X:8099, 便可看到gitlab管理後臺, 帳號:root, 密碼本身設置,登陸後:便可添加分組添加用戶及建立項目等操做ssh

建立組名xiejunbo, 建立項目名web, 建立用戶名xiejunbo,並把用戶xiejunbo加入組。maven

添加用戶本機和jenkins所在服務器的SSH-KEY:gitlab

WINDOWS 10:

CentOS7:

在user-->settings-->SSH Keys添加:

初始化maven項目web,並推送上gitlab:

 

 

3、docker安裝jenkins

拉取鏡像

docker pull jenkins/jenkins

建立jenkins容器:指定jenkins目錄,8080端口映射,maven目錄和java目錄

docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /usr/local/jenkins_home:/var/jenkins -v /usr/share/maven:/usr/local/maven -v /usr/jdk1.8.0_144:/usr/local/jdk 861760a10fdb

啓動容器:

打開http://X.X.X.X:8088, 首次打開:

進入jenkins容器拿到對應password後進入下一步

docker exec -it 9b5 /bin/bash

cat /var/jenkins_home/secrets/initialAdminPassword

選擇默認或自定義模式安裝對應插件,而後進入jenkins容器獲取密碼, 而後安裝對應插件(選上JUnit Plugin,SSH plugin,分別用於自動化單元測試和執行遠程服務器shell腳本, 還有個Maven Integration plugin, 用於Maven集成,不然新建的時候沒有Maven Project):

而後設置用戶名和密碼,以下:

4、配置jenkins

系統管理-->系統設置,底部,配置郵件通知:

設置管理員郵件:

設置smtp郵件代理:

測試收件:

 

接下來配置maven_home, maven配置文件地址,java_home及git:

 

建立一個maven風格的web項目:

填寫基本項:

jenkins配置推送觸發事件:

在gitlab後臺配置事件接口及token:

測試提交代碼到gitlab,觸發事件推送,jenkins開始執行構建任務。

配置jenkins服務器和部署服務器ssh-key證書,實現從jenkins服務器到部署服務器免密碼登陸:

配置過程

 

遇到的坑:

1. jenkins所在服務器的key驗證失敗

解決方法:jenkins所在服務器刪除掉server, 從新設置server便可。

2.從一個非tty環境執行腳本;Jenkins不能正常從你的腳本中退出

解決方法:jenkins腳本配置選項,選中

Exec in pty

配置servers:

部署腳本:

cd demo-service/bin
echo hellooooooooooooooooooooooooooooooooooooooo
cd /root/demo-service/bin
nohup ./execute.sh restart
echo ================= end ====================

 

 

5、提交代碼測試結果

過程:(開發人員只需完成第1步,其他步驟自動完成)

1. 修改代碼,提交到gitlab。

2. gitlab觸發push事件到jenkins。

3. jenkins收到push事件後,開始從gitlab下更新最新代碼。

4. jenkins用maven編譯構建打包項目。

5. 編譯打包經過後調用部署腳本進行自動部署。

 

自動部署成功

相關文章
相關標籤/搜索