Jenkins介紹和安裝及配合GitLab代碼自動部署

Jenkins介紹和安裝及配合GitLab代碼自動部署

 

Jenkins是什麼?

  1. 基於JAVA的開源的自動化系統平臺
  2. 加速自動化CI,CD任務及流水線,全部類型的任務:構建,測試,部署等
  3. 豐富的插件生態系統支持功能擴展,1400+插件和SCM,測試,通知,報告,Artfact,觸發,外部集成等
  4. 基於Web的管理和使用界面
  5. 源於Hudson
  6. 官網文檔:https://jenkins.io/doc/

Jenkins系統架構圖php

用docker環境部署Jenkins

一,安裝docker-ce版本html

1.1 刪除以前版本的Dockerjava

sudo yum remove docker docker-common docker-selinux docker-engine

1.2 安裝一些依賴node

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

1.3 下載repo文件linux

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

1.4 把軟件倉管地址替換爲 TUNA:git

sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

1.5 安裝github

sudo yum makecache fast
sudo yum install docker-ce

參考文檔:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/web

1.6 安裝完成後能夠使用:dock version 命令查看docker信息docker

複製代碼
[root@linux-node1 ~]# docker version
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:41:23 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:42:49 2017
 OS/Arch:      linux/amd64
 Experimental: false
複製代碼

二,安裝docker-compose數據庫

2.1 先確認完成docker環境安裝,再執行此步驟

2.2 參考文檔:

https://docs.docker.com/compose/install/

2.3 以linux爲例:

       2.3.1下載docker compose執行文件 

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

      2.3.2 添加執行權限

sudo chmod +x /usr/local/bin/docker-compose

     2.3.3 驗證結果

docker-compose --version
docker-compose version 1.17.0, build 1719ceb

三,下載鏡像文件

3.1 配置國內docker鏡像加速,國內拉取官方docker鏡像速度較慢

[root@linux-node1 data]# more /etc/docker/daemon.json 
{"registry-mirrors": ["http://4c7d9402.m.daocloud.io"]}

3.2 下載docker的Jenkins鏡像

docker pull jenkins:latest

3.3 下載gitlab-ce(若是須要能夠下載,可選擇)

docker pull gitlab/gitlab-ce:latest

3.4 下載daoker的sonarqube(若是須要能夠下載,可選擇)

docker pull sonarqube:latest

3.5 驗證docker鏡像下載結果

[root@linux-node1 data]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    latest              733cc235d0c0        3 days ago          1.38GB
sonarqube           latest              c1637bd4502f        12 days ago         934MB
jenkins             latest              3f08dc4f3f5d        3 weeks ago         809MB

3.6 啓動jenkins的docker鏡像

docker run -it --name jenkinsci0001 -v $HOME/jenkins:/var/  -p 8888:8080 -p 55000:50000 -p 45000:45000 jenkins:latest

在控制檯顯示信息以下

View Code

3.7 打開登錄界面,根據提示輸入上面的顯示的密碼

3.8 選擇默認推薦安裝的插件

3.9 等待插件安裝

3.10 設置帳戶密碼

....

3.11 進入頁面

四,使用yum安裝部署Jenkins

4.1 添加源

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo 

4.2 導入key

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

4.3 yum安裝 jenkins

yum install jenkins -y

爲何要使用Jenkins?


在2015年前咱們公司上線流程是:

1.測試環境權限開發給開發人員,開發調試看日誌拉代碼都是開發本身登錄到測試機上面操做

2.開發提測,QA經過後,開發人員發郵件到ops抄送其餘相關部門申請上線,須要開發主管確認等,ops再登服務器拉取發佈代碼到生產環境(就是說項目定在幾點上或者延遲上ops都得苦逼的等着)

3.ops發佈完成回覆郵件(每星期都會收到大量的上線郵件)

4.QA回滾測試

在2016年ops和其餘同行聊天抱怨的時候,人家說大家怎麼不用Jenkins。那時候由於年少無知Jenkins是什麼鬼啊,而後回來就開始研究,直到下半年就開始慢慢都用上了,如今是:

測試環境:收回開發人員登陸系統權限,代碼自動觸發更新,日誌經過ELK實時查看

生產環境:ops基本不參與上線項目,和開發負責人確認哪些開發人員能夠有哪些項目的上線權限,ops受權開發人員上線,服務器上面有代碼更新會腳本自動發郵件到ops。

                 具體開發內部怎麼上線由開發負責人決定,當業務有問題的時候ops再根據Jenkis的上線記錄排查問題,ops能夠節省大量時間去其它維護工做。

配置參考圖片


相關的項目:php  java .net

版本庫有:svn gitlab

服務器系統:CentOS Windows


 Jenkins系統設置:須要在Jenkins服務器上安裝一些工具軟件,而後再web界面添加環境變量等信息,這裏用的ssh祕鑰和服務器同步代碼

 

 

 

 

 

 

配置Jenkins帳號和Gitlab帳號信息有關聯

 設置Jenkins專有用戶數據庫

Androids apk打包配置

 

 

 

Java編譯發佈配置

 

 

 

項目構建狀況,測試環境在Gitlab的trunk分鐘,開發人員提交代碼到trunk就會觸發Jenkins拉取代碼發佈到業務服務器上面

 

php正式環境須要開發主管本身登錄到Jenkins進行點擊發布

用戶權限管理

用戶分組及項目建立

用戶項目權限分配

 

測試環境,自動構建

正式環境master分支,開發主管點擊構建發佈

GitLab8.9  Webhooks設置

 

使用Jenkins的裏面受權的帳號,GitLab的只讀權限就能夠

 Windows配置Jenkins讓.NET項目自動編譯發佈

View Code

插件安裝,subversion或者git取決根據代碼服務器實際狀況選擇安裝便可

Global Tool Configuration添加MSBuild工具

配置項目

 測試環境代碼拉取及日程表

構建及代碼發佈目錄配置

每分鐘輪詢如測試環境有新代碼提早就觸發代碼拉取編譯發

 來自網絡

 

志不強者智不達
 
posted @ 2017-09-08 18:01 warren1236 閱讀(25945) 評論(6) 編輯 收藏
 
評論列表
 
  
#1樓 2018-04-19 16:49 來自將來的豬  
請教下
  
#2樓[樓主] 2018-04-19 16:50 warren1236  
@ 來自將來的豬
什麼問題
  
#4樓 2018-04-19 16:51 來自將來的豬  
這個地方是你本身經過寫腳原本實現的嗎?
能夠借鑑下嗎
  
#5樓[樓主] 2018-04-19 18:10 warren1236  
是的,大概步驟是從gitlab上拉取前記錄一下日誌,來取後記錄日誌。
  
#6樓 2018-04-20 13:59 來自將來的豬  
@ warren1236
關於測試、UAT、生產環境,不一樣環境不一樣服務器下須要搭建多個jenkins嗎?仍是說在測試環境搭建一臺jenkins,利用項目名與maven不一樣的命令參數來將代碼部署到不一樣的環境呢?
 
相關文章
相關標籤/搜索