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

Jenkins是什麼?

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

用docker環境部署Jenkins

一,安裝docker-ce版本

1.1 刪除以前版本的Dockerphp

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

1.2 安裝一些依賴java

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

1.3 下載repo文件node

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

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

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

1.5 安裝git

sudo yum makecache fast
sudo yum install docker-ce

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

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

[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環境安裝,再執行此步驟spring

2.2 參考文檔:docker

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 

在控制檯顯示信息以下

...
org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@6b4ba523]: org.springframework.beans.factory.support.DefaultListableBeanFactory@ed6a5eb
Nov 26, 2017 5:29:44 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@ed6a5eb: defining beans [authenticationManager]; root of factory hierarchy
Nov 26, 2017 5:29:45 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@6fd126d1: display name [Root WebApplicationContext]; startup date [Sun Nov 26 05:29:45 UTC 2017]; root of context hierarchy
Nov 26, 2017 5:29:45 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@6fd126d1]: org.springframework.beans.factory.support.DefaultListableBeanFactory@62e4ea3c
Nov 26, 2017 5:29:45 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@62e4ea3c: defining beans [filter,legacy]; root of factory hierarchy
Nov 26, 2017 5:29:46 AM jenkins.install.SetupWizard init
INFO: 

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

da4d937a40144c53a05e4383273c902b

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

--> setting agent port for jnlp
--> setting agent port for jnlp... done
Nov 26, 2017 5:30:15 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Nov 26, 2017 5:30:17 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
Nov 26, 2017 5:30:21 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tools.JDKInstaller
Nov 26, 2017 5:30:21 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Finished Download metadata. 42,015 ms
Nov 26, 2017 5:30:48 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Nov 26, 2017 5:30:48 AM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running
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項目自動編譯發佈

定時自動發版工具
插件
MSBuild Plugin
subversion.hpi
Global Tool Configuration
      MSBuild
          v4.0.30319
          C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
任務
  byexx
  SVN
     svn://192.168.xx.xx/boxx/Byexx.BOxx.Serxx@HEAD  
  Build periodically
  Poll SCM
     * * * * *
  
  v4.0.30319
  Byexxx.BOxx.API.sln
  /m /t:Rebuild /property:Configuration=Release;TargetFrameworkVersion=v3.5;OutputPath=D:\xx_site\sxx.com\bin

1.編譯完的路徑
2.svn://192.168.xx.xx/boxx/Byexx.BOxx.Serxx@HEAD
View Code

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

Global Tool Configuration添加MSBuild工具

配置項目

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

構建及代碼發佈目錄配置

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

 來自網絡

相關文章
相關標籤/搜索