持續集成部署工具jenkins簡介

1. Jenkins基本介紹

Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。現在企業一般使用jenkins落實持續集成、持續部署、持續交付。也可以利用jenkins實現docker自動化流水

2. 安裝gitlab

gitlab部署 參考 https://blog.51cto.com/flyfish225/2145495
下載gitlab 最新版
https://packages.gitlab.com/gitlab/gitlab-ce/
安裝環境初始化
yum install curl policycoreutils openssh-server openssh-clients postfix -y
默認,使用 Postfix 發送郵件

service postfix start
chkconfig postfix on
systemctl stop firewalld
systemctl disable firewalld
安裝gitlab-ce
配置並啓動GitLab
gitlab-ctl reconfigure #重新配置應用程序。相當於初始化一下
gitlab-ctl status
vim /etc/gitlab/gitlab.rb
external_url 'http://ip:8899'
unicorn['port'] = 8899
sed -i '13s#http://gitlab.example.com#http://192.168.217.30:8899#' /etc/gitlab/gitlab.rb
改:13 external_url 'http://gitlab.example.com'
爲:13 external_url 'http://192.168.217.30:8899'
添加unicorn['port'] =8899 ,防止端口衝突
gitlab的管理

關閉gitlab: # gitlab-ctl stop
啓動gitlab: # gitlab-ctl start
重啓gitlab: # gitlab-ctl restart
登陸後臺
安裝git yum install git
基本命令如下:
git config --global user.name "tuwei"
git config --global user.email "[email protected]"
git clone [email protected]:tuwei/test01.git
cd test01
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
上傳本地項目到gitlab倉庫。
git init
git add .
git commit -m "push current files"
git remote add origin http://192.168.217.30:8090/devopsedu/game-of-life.git

如果提示origin存在
git remote rm origin
git remote add origin http://192.168.217.30:8090/devopsedu/game-of-life.git
git push -u origin master

3. maven安裝

下載二進制解壓到/usr/local目錄使用
maven官網的地址是http://maven.apache.org/
添加環境變量
MAVEN_HOME=/usr/local/apache-maven-3.6.0
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
source /etc/profile
測試mvn -v

4. 安裝JDK

yum -y install java-1.8.0

5. 安裝jenkins

http://pkg.jenkins.io/redhat-stable/
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
後臺登陸進行安裝配置,提示jenkins離線,修改配置
vim /var/lib/jenkins/updates/default.json 將鏈接地址改爲www.baidu.com
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml 將https改爲http然後重啓jenkins服務
主配置文件 vim /etc/sysconfig/jenkins。

根據頁面提示安裝推薦的插件。

Jenkins後臺插件管理是核心功能,filter中搜索gitlab,安裝三個
搜索Blue ocean

6. Jenkins基於角色的權限管理RBAC

實際生產環境中一般不使用admin即管理員權限,可以根據角色進行權限管理,如開發、測試、運維等。
這裏需要安裝一個插件:搜索role,很重要的一個插件。
安裝插件後需要啓用插件,在系統管理-全局安全配置。
授權策略改爲剛安裝的role,然後保存。
創建角色-用戶-給用戶指定角色。
在系統管理-管理用戶中創建用戶,然後在Manage and Assign Roles中通過Manage Roles創建角色,接着是通過Assign Roles指定用戶角色。

7. Jenkins Pipeline

生產環境一般使用pipeline實現自動化流水,當然也可以使用自由式風格構建作業。
語法
node {
stage('代碼拉取'){
echo "code pull"
}
stage('代碼構建'){
echo "code bbuild"
}
stage('unit test'){
echo "unit test"
}
}
根據之前安裝好的gitlab,創建一個group,然後在該group下創建一個demo項目

8. 分佈式構建

生產環境一般master不進行業務構建,利用slave節點去構建作業,master主責管理slave。在master 節點管理中添加slave節點,並配置master構建數爲0

9. 質量掃描sonarqube

安裝sonarqube
1.爲Sonar準備MySQL數據庫,版本必須大於5.6。

  1. 創建sonar數據庫

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar@pw';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar@pw';

mysql> FLUSH PRIVILEGES;
3.安裝配置啓動sonar
yum install -y java-1.8.0
sonar網站下載,解壓到/usr/local下並
創建普通用戶如sonar,然後將sonar目錄屬主和屬組改爲sonar
創建軟鏈接
編寫配置文件,修改數據庫配置

[root@linx-node2 conf]# vim sonar.properties

sonar.jdbc.username=sonar

sonar.jdbc.password=123456

sonar.jdbc.url=jdbc:mysql://192.168.217.32:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
同時根據服務器內存情況調整jvm中內存參數。
Vim /usr/local/sonarqube/elasticsearch/config/jvm.options
-Xms500m
-Xmx500m
由於本次測試環境虛擬機內存不到1G,故該調整爲500m

啓動sonar:切換到sonar用戶下,執行/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
瀏覽器訪問192.168.217.32:9000
sonar網站 www.sonar.org 文檔:https://docs.sonarqube.org/latest/
安裝sonarqube scanner進行質量掃描
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
Wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
解壓到/usr/local下,修改vim /usr/local/sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties
#----- Default SonarQube server
sonar.host.url=http://192.168.217.32:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8
使用:利用sonar網站提供的代碼進行測試 https://github.com/sonarsource
git clone https://github.com/SonarSource/sonar-scanning-examples.git

創建文件vim sonar-project.properties
[root@salt-minion02 sonarqube-scanner-maven]# cat sonar-project.properties

must be unique in a given SonarQube instance

sonar.projectKey=devopsedu-demo

this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.

sonar.projectName=devopsedu-demo
sonar.projectVersion=1.0

Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.

This property is optional if sonar.modules is set.

sonar.sources=.
sonar.java.binaries=.

Encoding of the source code. Default is default system encoding

sonar.sourceEncoding=UTF-8

10. jenkins和sonarqube集成

jenkins安裝sonar插件,系統配置sonarqube server地址及token信息。該token需要在sonarqube中進行創建

11. jenkins和gitlab集成

安裝gitlab插件,系統配置,gitlab中設置aceess token。
Jenkins構建作業時配置觸發器,並生成Secret token
Gitlab中添加webhook,在相關項目中添加

12. Jenkins權限管理之分配job給角色

將不同的job分配給不同的人員且賦予一定的操作權限。
之前有創建用戶並且分配,這裏創建一個project role,模式採用正則表達式方式,如role爲user ,pattern爲 user.*,分配權限build read workspace replay tag,然後分配用戶指定該角色(item roles)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章